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>
とりあえず起動できた。
