LiteXは自分でSoC環境を構成することができるツール。自作CPUをSoCに組み込んでみたいので、今回はこれを試行してみる。
$ wget https://raw.githubusercontent.com/enjoy-digital/litex/master/litex_setup.py
$ ./litex_setup.py --init --install --user --config=minimal
__ _ __ _ __ / / (_) /____ | |/_/ / /__/ / __/ -_)> < /____/_/\__/\__/_/|_| Build your hardware, easily! LiteX Setup utility. ... --- Logging error --- Traceback (most recent call last): File "/home/msyksphinz/.local/lib/python3.8/site-packages/pip/_internal/utils/logging.py", line 177, in emit self.console.print(renderable, overflow="ignore", crop=False, style=style) File "/home/msyksphinz/.local/lib/python3.8/site-packages/pip/_vendor/rich/console.py", line 1673, in print extend(render(renderable, render_options)) File "/home/msyksphinz/.local/lib/python3.8/site-packages/pip/_vendor/rich/console.py", line 1305, in render for render_output in iter_render: File "/home/msyksphinz/.local/lib/python3.8/site-packages/pip/_internal/utils/logging.py", line 134, in __rich_console__ for line in lines: File "/home/msyksphinz/.local/lib/python3.8/site-packages/pip/_vendor/rich/segment.py", line 249, in split_lines for segment in segments: File "/home/msyksphinz/.local/lib/python3.8/site-packages/pip/_vendor/rich/console.py", line 1283, in render renderable = rich_cast(renderable) File "/home/msyksphinz/.local/lib/python3.8/site-packages/pip/_vendor/rich/protocol.py", line 36, in rich_cast renderable = cast_method() File "/home/msyksphinz/.local/lib/python3.8/site-packages/pip/_internal/self_outdated_check.py", line 130, in __rich__ pip_cmd = get_best_invocation_for_this_pip() File "/home/msyksphinz/.local/lib/python3.8/site-packages/pip/_internal/utils/entrypoints.py", line 58, in get_best_invocation_for_this_pip if found_executable and os.path.samefile( File "/usr/lib/python3.8/genericpath.py", line 101, in samefile s2 = os.stat(f2) FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.8'
あれ?とりあえずシンボリックリンクで解決してみる。
$ cd /usr/bin $ sudo ln -s pip3 pip3.8
__ _ __ _ __ / / (_) /____ | |/_/ / /__/ / __/ -_)> < /____/_/\__/\__/_/|_| Build your hardware, easily! LiteX Setup utility. [ 0.001] LiteX Setup auto-update... [ 0.309] LiteX Setup is up to date. [ 0.309] Initializing Git repositories... [ 0.309] -------------------------------- [ 0.309] migen Git Repo already present. [ 0.309] litex Git Repo already present. [ 0.309] Installing Git repositories... [ 0.309] ------------------------------ [ 0.309] Installing migen Git repository... Obtaining file:///home/msyksphinz/work/litex/migen Preparing metadata (setup.py) ... done Requirement already satisfied: colorama in /usr/lib/python3/dist-packages (from migen==0.9.2) (0.4.3) Installing collected packages: migen Attempting uninstall: migen Found existing installation: migen 0.9.2 Uninstalling migen-0.9.2: Successfully uninstalled migen-0.9.2 Running setup.py develop for migen Successfully installed migen [notice] A new release of pip available: 22.2.2 -> 22.3.1 [notice] To update, run: python3 -m pip install --upgrade pip [ 1.102] Installing litex Git repository... Obtaining file:///home/msyksphinz/work/litex/litex Preparing metadata (setup.py) ... done Requirement already satisfied: pyserial in /usr/lib/python3/dist-packages (from litex==0.0.0) (3.4) Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from litex==0.0.0) (2.22.0) Installing collected packages: litex Attempting uninstall: litex Found existing installation: litex 0.0.0 Uninstalling litex-0.0.0: Successfully uninstalled litex-0.0.0 Running setup.py develop for litex Successfully installed litex [notice] A new release of pip available: 22.2.2 -> 22.3.1 [notice] To update, run: python3 -m pip install --upgrade pip
お、なんとなくうまくいった。
次に、ツールチェインのインストールとVexRiscvを実装してみる。
$ pip3 install meson ninja
どうもconfig=standard
以上にしないとVexRiscvを使えないらしい
$ ./litex_setup.py --init --install --user --config=standard $ litex_sim --cpu-type=vexriscv
[spdeeprom] loaded (addr = 0x0) [xgmii_ethernet] loaded (0x55d41a151ef0) [clocker] loaded [ethernet] loaded (0x55d41a151ef0) [gmii_ethernet] loaded (0x55d41a151ef0) [serial2console] loaded (0x55d41a151ef0) [serial2tcp] loaded (0x55d41a151ef0) [clocker] sys_clk: freq_hz=1000000, phase_deg=0 __ _ __ _ __ / / (_) /____ | |/_/ / /__/ / __/ -_)> < /____/_/\__/\__/_/|_| Build your hardware, easily! (c) Copyright 2012-2022 Enjoy-Digital (c) Copyright 2007-2015 M-Labs BIOS built on Dec 2 2022 23:49:49 BIOS CRC passed (fc66119d) LiteX git sha1: fe7e70ba --=============== SoC ==================-- CPU: VexRiscv @ 1MHz BUS: WISHBONE 32-bit @ 4GiB CSR: 32-bit data ROM: 128KiB SRAM: 8KiB --============== Boot ==================-- Booting from serial... Press Q or ESC to abort boot completely. sL5DdSMmkekro Timeout No boot medium found --============= Console ================-- litex>
とりあえず起動できた。