mirror of
https://github.com/YosysHQ/yosys
synced 2026-05-21 17:39:41 +00:00
Make out of tree build testing possible
This commit is contained in:
parent
5c6de04467
commit
c0779f488a
37 changed files with 131 additions and 119 deletions
|
|
@ -100,7 +100,7 @@ makefile-./%: %/Makefile
|
||||||
.PHONY: functional
|
.PHONY: functional
|
||||||
functional:
|
functional:
|
||||||
ifeq ($(ENABLE_FUNCTIONAL_TESTS),1)
|
ifeq ($(ENABLE_FUNCTIONAL_TESTS),1)
|
||||||
@cd functional && ./run-test.sh
|
-@cd functional && ./run-test.sh
|
||||||
endif
|
endif
|
||||||
|
|
||||||
vanilla-test: prep makefile-tests functional
|
vanilla-test: prep makefile-tests functional
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
../../../yosys -qp "synth_xilinx -top macc2; rename -top macc2_uut" -o macc_uut.v macc.v
|
${YOSYS} -qp "synth_xilinx -top macc2; rename -top macc2_uut" -o macc_uut.v macc.v
|
||||||
iverilog -o test_macc macc_tb.v macc_uut.v macc.v ../../../techlibs/xilinx/cells_sim.v
|
iverilog -o test_macc macc_tb.v macc_uut.v macc.v ../../../techlibs/xilinx/cells_sim.v
|
||||||
vvp -N ./test_macc
|
vvp -N ./test_macc
|
||||||
../../../yosys -qp "synth_xilinx -family xc6s -top macc2; rename -top macc2_uut" -o macc_uut.v macc.v
|
${YOSYS} -qp "synth_xilinx -family xc6s -top macc2; rename -top macc2_uut" -o macc_uut.v macc.v
|
||||||
iverilog -o test_macc macc_tb.v macc_uut.v macc.v ../../../techlibs/xilinx/cells_sim.v
|
iverilog -o test_macc macc_tb.v macc_uut.v macc.v ../../../techlibs/xilinx/cells_sim.v
|
||||||
vvp -N ./test_macc
|
vvp -N ./test_macc
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
../../../yosys -f verilog -qp "synth_xilinx" ../common/tribuf.v
|
${YOSYS} -f verilog -qp "synth_xilinx" ../common/tribuf.v
|
||||||
../../../yosys -f verilog -qp "synth_xilinx -iopad; \
|
${YOSYS} -f verilog -qp "synth_xilinx -iopad; \
|
||||||
select -assert-count 2 t:IBUF; \
|
select -assert-count 2 t:IBUF; \
|
||||||
select -assert-count 1 t:INV; \
|
select -assert-count 1 t:INV; \
|
||||||
select -assert-count 1 t:OBUFT" ../common/tribuf.v
|
select -assert-count 1 t:OBUFT" ../common/tribuf.v
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
../../yosys -qq -f verilog -p "proc; opt; memory -nomap -bram temp/brams_${2}.txt; opt -fast -full" \
|
${YOSYS} -qq -f verilog -p "proc; opt; memory -nomap -bram temp/brams_${2}.txt; opt -fast -full" \
|
||||||
-l temp/synth_${1}_${2}.log -o temp/synth_${1}_${2}.v temp/brams_${1}.v
|
-l temp/synth_${1}_${2}.log -o temp/synth_${1}_${2}.v temp/brams_${1}.v
|
||||||
iverilog -Dvcd_file=\"temp/tb_${1}_${2}.vcd\" -DSIMLIB_MEMDELAY=1 -o temp/tb_${1}_${2}.tb temp/brams_${1}_tb.v \
|
iverilog -Dvcd_file=\"temp/tb_${1}_${2}.vcd\" -DSIMLIB_MEMDELAY=1 -o temp/tb_${1}_${2}.tb temp/brams_${1}_tb.v \
|
||||||
temp/brams_${1}_ref.v temp/synth_${1}_${2}.v temp/brams_${2}.v ../../techlibs/common/simlib.v
|
temp/brams_${1}_ref.v temp/synth_${1}_${2}.v temp/brams_${2}.v ../../techlibs/common/simlib.v
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,29 @@
|
||||||
write_file fail.temp << EOF
|
write_file fail.temp << EOF
|
||||||
logger -expect error "Missing -script or -command option." 1
|
logger -expect error "Missing -script or -command option." 1
|
||||||
bugpoint -suffix fail -yosys ../../yosys
|
bugpoint -suffix fail -yosys ${YOSYS}
|
||||||
EOF
|
EOF
|
||||||
exec -expect-return 0 -- ../../yosys -qq mods.il -s fail.temp
|
exec -expect-return 0 -- ${YOSYS} -qq mods.il -s fail.temp
|
||||||
|
|
||||||
write_file fail.temp << EOF
|
write_file fail.temp << EOF
|
||||||
logger -expect error "do not crash on this design" 1
|
logger -expect error "do not crash on this design" 1
|
||||||
bugpoint -suffix fail -yosys ../../yosys -command "dump"
|
bugpoint -suffix fail -yosys ${YOSYS} -command "dump"
|
||||||
EOF
|
EOF
|
||||||
exec -expect-return 0 -- ../../yosys -qq mods.il -s fail.temp
|
exec -expect-return 0 -- ${YOSYS} -qq mods.il -s fail.temp
|
||||||
|
|
||||||
write_file fail.temp << EOF
|
write_file fail.temp << EOF
|
||||||
logger -expect error "returned value 3 instead of expected 7" 1
|
logger -expect error "returned value 3 instead of expected 7" 1
|
||||||
bugpoint -suffix fail -yosys ../../yosys -command raise_error -expect-return 7
|
bugpoint -suffix fail -yosys ${YOSYS} -command raise_error -expect-return 7
|
||||||
EOF
|
EOF
|
||||||
exec -expect-return 0 -- ../../yosys -qq mods.il -s fail.temp
|
exec -expect-return 0 -- ${YOSYS} -qq mods.il -s fail.temp
|
||||||
|
|
||||||
write_file fail.temp << EOF
|
write_file fail.temp << EOF
|
||||||
logger -expect error "not found in the log file!" 1
|
logger -expect error "not found in the log file!" 1
|
||||||
bugpoint -suffix fail -yosys ../../yosys -command raise_error -grep "nope"
|
bugpoint -suffix fail -yosys ${YOSYS} -command raise_error -grep "nope"
|
||||||
EOF
|
EOF
|
||||||
exec -expect-return 0 -- ../../yosys -qq mods.il -s fail.temp
|
exec -expect-return 0 -- ${YOSYS} -qq mods.il -s fail.temp
|
||||||
|
|
||||||
write_file fail.temp << EOF
|
write_file fail.temp << EOF
|
||||||
logger -expect error "not found in stderr log!" 1
|
logger -expect error "not found in stderr log!" 1
|
||||||
bugpoint -suffix fail -yosys ../../yosys -command raise_error -err-grep "nope"
|
bugpoint -suffix fail -yosys ${YOSYS} -command raise_error -err-grep "nope"
|
||||||
EOF
|
EOF
|
||||||
exec -expect-return 0 -- ../../yosys -qq mods.il -s fail.temp
|
exec -expect-return 0 -- ${YOSYS} -qq mods.il -s fail.temp
|
||||||
|
|
|
||||||
|
|
@ -6,35 +6,35 @@ design -stash base
|
||||||
|
|
||||||
# everything is removed by default
|
# everything is removed by default
|
||||||
design -load base
|
design -load base
|
||||||
bugpoint -suffix mods -yosys ../../yosys -command raise_error -expect-return 3
|
bugpoint -suffix mods -yosys ${YOSYS} -command raise_error -expect-return 3
|
||||||
select -assert-count 1 w:*
|
select -assert-count 1 w:*
|
||||||
select -assert-mod-count 1 =*
|
select -assert-mod-count 1 =*
|
||||||
select -assert-none c:*
|
select -assert-none c:*
|
||||||
|
|
||||||
# don't remove wires
|
# don't remove wires
|
||||||
design -load base
|
design -load base
|
||||||
bugpoint -suffix mods -yosys ../../yosys -command raise_error -expect-return 3 -modules -cells
|
bugpoint -suffix mods -yosys ${YOSYS} -command raise_error -expect-return 3 -modules -cells
|
||||||
select -assert-count 3 w:*
|
select -assert-count 3 w:*
|
||||||
select -assert-mod-count 1 =*
|
select -assert-mod-count 1 =*
|
||||||
select -assert-none c:*
|
select -assert-none c:*
|
||||||
|
|
||||||
# don't remove cells or their connections
|
# don't remove cells or their connections
|
||||||
design -load base
|
design -load base
|
||||||
bugpoint -suffix mods -yosys ../../yosys -command raise_error -expect-return 3 -wires -modules
|
bugpoint -suffix mods -yosys ${YOSYS} -command raise_error -expect-return 3 -wires -modules
|
||||||
select -assert-count 5 w:*
|
select -assert-count 5 w:*
|
||||||
select -assert-mod-count 1 =*
|
select -assert-mod-count 1 =*
|
||||||
select -assert-count 4 c:*
|
select -assert-count 4 c:*
|
||||||
|
|
||||||
# don't remove cells but do remove their connections
|
# don't remove cells but do remove their connections
|
||||||
design -load base
|
design -load base
|
||||||
bugpoint -suffix mods -yosys ../../yosys -command raise_error -expect-return 3 -wires -modules -connections
|
bugpoint -suffix mods -yosys ${YOSYS} -command raise_error -expect-return 3 -wires -modules -connections
|
||||||
select -assert-count 1 w:*
|
select -assert-count 1 w:*
|
||||||
select -assert-mod-count 1 =*
|
select -assert-mod-count 1 =*
|
||||||
select -assert-count 4 c:*
|
select -assert-count 4 c:*
|
||||||
|
|
||||||
# don't remove modules
|
# don't remove modules
|
||||||
design -load base
|
design -load base
|
||||||
bugpoint -suffix mods -yosys ../../yosys -command raise_error -expect-return 3 -wires -cells
|
bugpoint -suffix mods -yosys ${YOSYS} -command raise_error -expect-return 3 -wires -cells
|
||||||
select -assert-count 1 w:*
|
select -assert-count 1 w:*
|
||||||
select -assert-mod-count 3 =*
|
select -assert-mod-count 3 =*
|
||||||
select -assert-none c:*
|
select -assert-none c:*
|
||||||
|
|
@ -42,7 +42,7 @@ select -assert-none c:*
|
||||||
# can keep wires
|
# can keep wires
|
||||||
design -load base
|
design -load base
|
||||||
setattr -set bugpoint_keep 1 w:w_b
|
setattr -set bugpoint_keep 1 w:w_b
|
||||||
bugpoint -suffix mods -yosys ../../yosys -command raise_error -expect-return 3
|
bugpoint -suffix mods -yosys ${YOSYS} -command raise_error -expect-return 3
|
||||||
select -assert-count 2 w:*
|
select -assert-count 2 w:*
|
||||||
select -assert-mod-count 1 =*
|
select -assert-mod-count 1 =*
|
||||||
select -assert-none c:*
|
select -assert-none c:*
|
||||||
|
|
@ -50,7 +50,7 @@ select -assert-none c:*
|
||||||
# a wire with keep won't keep the cell/module containing it
|
# a wire with keep won't keep the cell/module containing it
|
||||||
design -load base
|
design -load base
|
||||||
setattr -set bugpoint_keep 1 w:w_o
|
setattr -set bugpoint_keep 1 w:w_o
|
||||||
bugpoint -suffix mods -yosys ../../yosys -command raise_error -expect-return 3
|
bugpoint -suffix mods -yosys ${YOSYS} -command raise_error -expect-return 3
|
||||||
select -assert-count 1 w:*
|
select -assert-count 1 w:*
|
||||||
select -assert-mod-count 1 =*
|
select -assert-mod-count 1 =*
|
||||||
select -assert-none c:*
|
select -assert-none c:*
|
||||||
|
|
@ -58,7 +58,7 @@ select -assert-none c:*
|
||||||
# can keep cells (and do it without the associated module)
|
# can keep cells (and do it without the associated module)
|
||||||
design -load base
|
design -load base
|
||||||
setattr -set bugpoint_keep 1 c:c_a
|
setattr -set bugpoint_keep 1 c:c_a
|
||||||
bugpoint -suffix mods -yosys ../../yosys -command raise_error -expect-return 3
|
bugpoint -suffix mods -yosys ${YOSYS} -command raise_error -expect-return 3
|
||||||
select -assert-count 1 w:*
|
select -assert-count 1 w:*
|
||||||
select -assert-mod-count 1 =*
|
select -assert-mod-count 1 =*
|
||||||
select -assert-count 1 c:*
|
select -assert-count 1 c:*
|
||||||
|
|
@ -66,7 +66,7 @@ select -assert-count 1 c:*
|
||||||
# can keep modules
|
# can keep modules
|
||||||
design -load base
|
design -load base
|
||||||
setattr -mod -set bugpoint_keep 1 m_a
|
setattr -mod -set bugpoint_keep 1 m_a
|
||||||
bugpoint -suffix mods -yosys ../../yosys -command raise_error -expect-return 3
|
bugpoint -suffix mods -yosys ${YOSYS} -command raise_error -expect-return 3
|
||||||
select -assert-count 1 w:*
|
select -assert-count 1 w:*
|
||||||
select -assert-mod-count 2 =*
|
select -assert-mod-count 2 =*
|
||||||
select -assert-none c:*
|
select -assert-none c:*
|
||||||
|
|
@ -77,7 +77,7 @@ write_file script.temp << EOF
|
||||||
select -assert-none w:w_a %co* w:w_c %ci* %i
|
select -assert-none w:w_a %co* w:w_c %ci* %i
|
||||||
EOF
|
EOF
|
||||||
design -load base
|
design -load base
|
||||||
bugpoint -suffix mods -yosys ../../yosys -script script.temp -grep "Assertion failed"
|
bugpoint -suffix mods -yosys ${YOSYS} -script script.temp -grep "Assertion failed"
|
||||||
select -assert-count 5 w:*
|
select -assert-count 5 w:*
|
||||||
select -assert-mod-count 2 =*
|
select -assert-mod-count 2 =*
|
||||||
select -assert-count 2 c:*
|
select -assert-count 2 c:*
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,18 @@ design -stash err_q
|
||||||
|
|
||||||
# processes get removed by default
|
# processes get removed by default
|
||||||
design -load err_q
|
design -load err_q
|
||||||
bugpoint -suffix procs -yosys ../../yosys -command raise_error -expect-return 4
|
bugpoint -suffix procs -yosys ${YOSYS} -command raise_error -expect-return 4
|
||||||
select -assert-none p:*
|
select -assert-none p:*
|
||||||
|
|
||||||
# individual processes can be kept
|
# individual processes can be kept
|
||||||
design -load err_q
|
design -load err_q
|
||||||
setattr -set bugpoint_keep 1 p:proc_a
|
setattr -set bugpoint_keep 1 p:proc_a
|
||||||
bugpoint -suffix procs -yosys ../../yosys -command raise_error -expect-return 4
|
bugpoint -suffix procs -yosys ${YOSYS} -command raise_error -expect-return 4
|
||||||
select -assert-count 1 p:*
|
select -assert-count 1 p:*
|
||||||
|
|
||||||
# all processes can be kept
|
# all processes can be kept
|
||||||
design -load err_q
|
design -load err_q
|
||||||
bugpoint -suffix procs -yosys ../../yosys -command raise_error -expect-return 4 -wires
|
bugpoint -suffix procs -yosys ${YOSYS} -command raise_error -expect-return 4 -wires
|
||||||
select -assert-count 2 p:*
|
select -assert-count 2 p:*
|
||||||
|
|
||||||
# d and clock are connected after proc
|
# d and clock are connected after proc
|
||||||
|
|
@ -26,24 +26,24 @@ select -assert-count 3 w:clock %co
|
||||||
|
|
||||||
# no assigns means no d
|
# no assigns means no d
|
||||||
design -load err_q
|
design -load err_q
|
||||||
bugpoint -suffix procs -yosys ../../yosys -command raise_error -expect-return 4 -assigns
|
bugpoint -suffix procs -yosys ${YOSYS} -command raise_error -expect-return 4 -assigns
|
||||||
proc
|
proc
|
||||||
select -assert-count 1 w:d %co
|
select -assert-count 1 w:d %co
|
||||||
|
|
||||||
# no updates means no clock
|
# no updates means no clock
|
||||||
design -load err_q
|
design -load err_q
|
||||||
bugpoint -suffix procs -yosys ../../yosys -command raise_error -expect-return 4 -updates
|
bugpoint -suffix procs -yosys ${YOSYS} -command raise_error -expect-return 4 -updates
|
||||||
proc
|
proc
|
||||||
select -assert-count 1 w:clock %co
|
select -assert-count 1 w:clock %co
|
||||||
|
|
||||||
# can remove ports
|
# can remove ports
|
||||||
design -load err_q
|
design -load err_q
|
||||||
select -assert-count 5 x:*
|
select -assert-count 5 x:*
|
||||||
bugpoint -suffix procs -yosys ../../yosys -command raise_error -expect-return 4 -ports
|
bugpoint -suffix procs -yosys ${YOSYS} -command raise_error -expect-return 4 -ports
|
||||||
select -assert-none x:*
|
select -assert-none x:*
|
||||||
|
|
||||||
# can keep ports
|
# can keep ports
|
||||||
design -load err_q
|
design -load err_q
|
||||||
setattr -set bugpoint_keep 1 i:d o:q
|
setattr -set bugpoint_keep 1 i:d o:q
|
||||||
bugpoint -suffix procs -yosys ../../yosys -command raise_error -expect-return 4 -ports
|
bugpoint -suffix procs -yosys ${YOSYS} -command raise_error -expect-return 4 -ports
|
||||||
select -assert-count 2 x:*
|
select -assert-count 2 x:*
|
||||||
|
|
|
||||||
|
|
@ -24,21 +24,21 @@ logger -check-expected
|
||||||
design -load read
|
design -load read
|
||||||
setattr -mod -unset raise_error def other
|
setattr -mod -unset raise_error def other
|
||||||
dump
|
dump
|
||||||
bugpoint -suffix error -yosys ../../yosys -command raise_error -expect-return 7
|
bugpoint -suffix error -yosys ${YOSYS} -command raise_error -expect-return 7
|
||||||
select -assert-mod-count 1 =*
|
select -assert-mod-count 1 =*
|
||||||
select -assert-mod-count 1 top
|
select -assert-mod-count 1 top
|
||||||
|
|
||||||
# raise_error -always still uses 'raise_error' attribute if possible
|
# raise_error -always still uses 'raise_error' attribute if possible
|
||||||
design -load read
|
design -load read
|
||||||
setattr -mod -unset raise_error def other
|
setattr -mod -unset raise_error def other
|
||||||
bugpoint -suffix error -yosys ../../yosys -command "raise_error -always" -expect-return 7
|
bugpoint -suffix error -yosys ${YOSYS} -command "raise_error -always" -expect-return 7
|
||||||
select -assert-mod-count 1 =*
|
select -assert-mod-count 1 =*
|
||||||
select -assert-mod-count 1 top
|
select -assert-mod-count 1 top
|
||||||
|
|
||||||
# raise_error with string prints message and exits with 1
|
# raise_error with string prints message and exits with 1
|
||||||
design -load read
|
design -load read
|
||||||
setattr -mod -unset raise_error top def
|
setattr -mod -unset raise_error top def
|
||||||
bugpoint -suffix error -yosys ../../yosys -command raise_error -grep "help me" -expect-return 1
|
bugpoint -suffix error -yosys ${YOSYS} -command raise_error -grep "help me" -expect-return 1
|
||||||
select -assert-mod-count 1 =*
|
select -assert-mod-count 1 =*
|
||||||
select -assert-mod-count 1 other
|
select -assert-mod-count 1 other
|
||||||
|
|
||||||
|
|
@ -46,18 +46,18 @@ select -assert-mod-count 1 other
|
||||||
design -load read
|
design -load read
|
||||||
setattr -mod -unset raise_error top
|
setattr -mod -unset raise_error top
|
||||||
delete other
|
delete other
|
||||||
bugpoint -suffix error -yosys ../../yosys -command raise_error -expect-return 1
|
bugpoint -suffix error -yosys ${YOSYS} -command raise_error -expect-return 1
|
||||||
select -assert-mod-count 1 =*
|
select -assert-mod-count 1 =*
|
||||||
select -assert-mod-count 1 def
|
select -assert-mod-count 1 def
|
||||||
|
|
||||||
# raise_error -stderr prints to stderr and exits with 1
|
# raise_error -stderr prints to stderr and exits with 1
|
||||||
design -load read
|
design -load read
|
||||||
setattr -mod -unset raise_error top def
|
setattr -mod -unset raise_error top def
|
||||||
bugpoint -suffix error -yosys ../../yosys -command "raise_error -stderr" -err-grep "help me" -expect-return 1
|
bugpoint -suffix error -yosys ${YOSYS} -command "raise_error -stderr" -err-grep "help me" -expect-return 1
|
||||||
select -assert-mod-count 1 =*
|
select -assert-mod-count 1 =*
|
||||||
select -assert-mod-count 1 other
|
select -assert-mod-count 1 other
|
||||||
|
|
||||||
# empty design can raise_error -always
|
# empty design can raise_error -always
|
||||||
design -reset
|
design -reset
|
||||||
bugpoint -suffix error -yosys ../../yosys -command "raise_error -always" -grep "ERROR: No 'raise_error' attribute found" -expect-return 1
|
bugpoint -suffix error -yosys ${YOSYS} -command "raise_error -always" -grep "ERROR: No 'raise_error' attribute found" -expect-return 1
|
||||||
bugpoint -suffix error -yosys ../../yosys -command "raise_error -always -stderr" -err-grep "No 'raise_error' attribute found" -expect-return 1
|
bugpoint -suffix error -yosys ${YOSYS} -command "raise_error -always -stderr" -err-grep "No 'raise_error' attribute found" -expect-return 1
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
ROOT_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
|
||||||
|
BUILD_DIR ?= $(ROOT_DIR)/..
|
||||||
|
|
||||||
|
YOSYS ?= $(BUILD_DIR)/yosys
|
||||||
|
ABC ?= $(BUILD_DIR)/yosys-abc
|
||||||
|
YOSYS_FILTERLIB ?= $(BUILD_DIR)/yosys-filterlib
|
||||||
|
YOSYS_CONFIG ?= $(BUILD_DIR)/yosys-config
|
||||||
|
|
||||||
|
export YOSYS
|
||||||
|
export YOSYS_CONFIG
|
||||||
|
export ABC
|
||||||
|
|
||||||
all:
|
all:
|
||||||
|
|
||||||
ifndef OVERRIDE_MAIN
|
ifndef OVERRIDE_MAIN
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import subprocess
|
import subprocess
|
||||||
import pytest
|
import pytest
|
||||||
import sys
|
import os
|
||||||
import shlex
|
import shlex
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
@ -18,7 +18,7 @@ def run(cmd, **kwargs):
|
||||||
assert status.returncode == 0, f"{cmd[0]} failed"
|
assert status.returncode == 0, f"{cmd[0]} failed"
|
||||||
|
|
||||||
def yosys(script):
|
def yosys(script):
|
||||||
run([base_path / 'yosys', '-Q', '-p', script])
|
run([os.environ.get("YOSYS", "../../yosys"), '-Q', '-p', script])
|
||||||
|
|
||||||
def compile_cpp(in_path, out_path, args):
|
def compile_cpp(in_path, out_path, args):
|
||||||
run(['g++', '-g', '-std=c++20'] + args + [str(in_path), '-o', str(out_path)])
|
run(['g++', '-g', '-std=c++20'] + args + [str(in_path), '-o', str(out_path)])
|
||||||
|
|
@ -35,7 +35,7 @@ def yosys_sim(rtlil_file, vcd_reference_file, vcd_out_file, preprocessing = ""):
|
||||||
# since yosys sim aborts on simulation mismatch to generate vcd output
|
# since yosys sim aborts on simulation mismatch to generate vcd output
|
||||||
# we have to re-run with a different set of flags
|
# we have to re-run with a different set of flags
|
||||||
# on this run we ignore output and return code, we just want a best-effort attempt to get a vcd
|
# on this run we ignore output and return code, we just want a best-effort attempt to get a vcd
|
||||||
subprocess.run([base_path / 'yosys', '-Q', '-p',
|
subprocess.run([os.environ.get("YOSYS", "../../yosys"), '-Q', '-p',
|
||||||
f'read_rtlil {quote(rtlil_file)}; sim -vcd {quote(vcd_out_file)} -a -r {quote(vcd_reference_file)} -scope gold -timescale 1us -fst-noinit'],
|
f'read_rtlil {quote(rtlil_file)}; sim -vcd {quote(vcd_out_file)} -a -r {quote(vcd_reference_file)} -scope gold -timescale 1us -fst-noinit'],
|
||||||
capture_output=True, check=False)
|
capture_output=True, check=False)
|
||||||
raise
|
raise
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ def print_header(extra=None):
|
||||||
print(f"ifneq ($(wildcard {yosys_basedir}/Makefile.conf),)")
|
print(f"ifneq ($(wildcard {yosys_basedir}/Makefile.conf),)")
|
||||||
print(f"include {yosys_basedir}/Makefile.conf")
|
print(f"include {yosys_basedir}/Makefile.conf")
|
||||||
print(f"endif")
|
print(f"endif")
|
||||||
print(f"YOSYS ?= {yosys_basedir}/yosys")
|
|
||||||
print("")
|
print("")
|
||||||
print("export YOSYS_MAX_THREADS := 4")
|
print("export YOSYS_MAX_THREADS := 4")
|
||||||
if extra:
|
if extra:
|
||||||
|
|
@ -128,7 +128,7 @@ def generate_custom(callback, extra=None):
|
||||||
callback()
|
callback()
|
||||||
|
|
||||||
def generate_autotest_file(test_file, commands):
|
def generate_autotest_file(test_file, commands):
|
||||||
cmd = f"../tools/autotest.sh -G -j ${{SEEDOPT}} ${{EXTRA_FLAGS}} {test_file}; \\\n{commands}"
|
cmd = f"../tools/autotest.sh -G -j ${{SEEDOPT}} -Y ${{YOSYS}} ${{EXTRA_FLAGS}} {test_file}; \\\n{commands}"
|
||||||
generate_target(test_file, cmd)
|
generate_target(test_file, cmd)
|
||||||
|
|
||||||
def generate_autotest(pattern, extra_flags, cmds=""):
|
def generate_autotest(pattern, extra_flags, cmds=""):
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,7 @@ def main():
|
||||||
lib_tests()
|
lib_tests()
|
||||||
ys_tests()
|
ys_tests()
|
||||||
|
|
||||||
gen_tests_makefile.generate_custom(callback,
|
gen_tests_makefile.generate_custom(callback)
|
||||||
[f"YOSYS_FILTERLIB ?= {gen_tests_makefile.yosys_basedir}/yosys-filterlib"])
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
||||||
|
|
@ -40,19 +40,19 @@ def create_tests():
|
||||||
|
|
||||||
gen_tests_makefile.generate_cmd_test("child_content1", [
|
gen_tests_makefile.generate_cmd_test("child_content1", [
|
||||||
f"{setup}",
|
f"{setup}",
|
||||||
'cd temp && ../$(YOSYS) -qp "read_verilog -defer ../memory.v; '
|
'cd temp && $(YOSYS) -qp "read_verilog -defer ../memory.v; '
|
||||||
'chparam -set MEMFILE \\"content1.dat\\" memory"'
|
'chparam -set MEMFILE \\"content1.dat\\" memory"'
|
||||||
])
|
])
|
||||||
|
|
||||||
gen_tests_makefile.generate_cmd_test("child_content2_temp", [
|
gen_tests_makefile.generate_cmd_test("child_content2_temp", [
|
||||||
f"{setup}",
|
f"{setup}",
|
||||||
'cd temp && ../$(YOSYS) -qp "read_verilog -defer ../memory.v; '
|
'cd temp && $(YOSYS) -qp "read_verilog -defer ../memory.v; '
|
||||||
'chparam -set MEMFILE \\"temp/content2.dat\\" memory"'
|
'chparam -set MEMFILE \\"temp/content2.dat\\" memory"'
|
||||||
])
|
])
|
||||||
|
|
||||||
gen_tests_makefile.generate_cmd_test("child_content2_direct", [
|
gen_tests_makefile.generate_cmd_test("child_content2_direct", [
|
||||||
f"{setup}",
|
f"{setup}",
|
||||||
'cd temp && ../$(YOSYS) -qp "read_verilog -defer ../memory.v; '
|
'cd temp && $(YOSYS) -qp "read_verilog -defer ../memory.v; '
|
||||||
'chparam -set MEMFILE \\"temp/content2.dat\\" memory"'
|
'chparam -set MEMFILE \\"temp/content2.dat\\" memory"'
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1574,7 +1574,7 @@ def create_tests():
|
||||||
for lib in t.libs:
|
for lib in t.libs:
|
||||||
libs_args += f" -l memlib_{lib}.v"
|
libs_args += f" -l memlib_{lib}.v"
|
||||||
cmd = (
|
cmd = (
|
||||||
f"../tools/autotest.sh -G -j ${{SEEDOPT}} ${{EXTRA_FLAGS}} "
|
f"../tools/autotest.sh -G -j ${{SEEDOPT}} -Y ${{YOSYS}} "
|
||||||
f"-p 'script ../t_{t.name}.ys'"
|
f"-p 'script ../t_{t.name}.ys'"
|
||||||
f"{libs_args} "
|
f"{libs_args} "
|
||||||
f"t_{t.name}.v || (cat t_{t.name}.err; exit 1)"
|
f"t_{t.name}.v || (cat t_{t.name}.err; exit 1)"
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ def main():
|
||||||
sock.bind(args.path)
|
sock.bind(args.path)
|
||||||
try:
|
try:
|
||||||
sock.listen(1)
|
sock.listen(1)
|
||||||
ys_proc = subprocess.Popen(["../../yosys", "-ql", "unix.log", "-p", "connect_rpc -path {}; read_verilog design.v; hierarchy -top top; flatten; select -assert-count 1 t:$neg".format(args.path)])
|
ys_proc = subprocess.Popen([os.environ.get("YOSYS", "../../yosys"), "-ql", "unix.log", "-p", "connect_rpc -path {}; read_verilog design.v; hierarchy -top top; flatten; select -assert-count 1 t:$neg".format(args.path)])
|
||||||
conn, addr = sock.accept()
|
conn, addr = sock.accept()
|
||||||
file = conn.makefile("rw")
|
file = conn.makefile("rw")
|
||||||
while True:
|
while True:
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
YS=../../yosys
|
|
||||||
|
|
||||||
mkdir -p temp
|
mkdir -p temp
|
||||||
|
|
||||||
$YS -p "read_verilog -sv everything.v; write_rtlil temp/roundtrip-design-push.il; design -push; design -pop; write_rtlil temp/roundtrip-design-pop.il"
|
${YOSYS} -p "read_verilog -sv everything.v; write_rtlil temp/roundtrip-design-push.il; design -push; design -pop; write_rtlil temp/roundtrip-design-pop.il"
|
||||||
diff temp/roundtrip-design-push.il temp/roundtrip-design-pop.il
|
diff temp/roundtrip-design-push.il temp/roundtrip-design-pop.il
|
||||||
|
|
||||||
$YS -p "read_verilog -sv everything.v; write_rtlil temp/roundtrip-design-save.il; design -save foo; design -load foo; write_rtlil temp/roundtrip-design-load.il"
|
${YOSYS} -p "read_verilog -sv everything.v; write_rtlil temp/roundtrip-design-save.il; design -save foo; design -load foo; write_rtlil temp/roundtrip-design-load.il"
|
||||||
diff temp/roundtrip-design-save.il temp/roundtrip-design-load.il
|
diff temp/roundtrip-design-save.il temp/roundtrip-design-load.il
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
YS=../../yosys
|
|
||||||
|
|
||||||
mkdir -p temp
|
mkdir -p temp
|
||||||
|
|
||||||
|
|
@ -11,7 +10,7 @@ remove_empty_lines() {
|
||||||
}
|
}
|
||||||
|
|
||||||
# write_rtlil and dump are equivalent
|
# write_rtlil and dump are equivalent
|
||||||
$YS -p "read_verilog -sv everything.v; copy alu zzz; proc zzz; dump -o temp/roundtrip-text.dump.il; write_rtlil temp/roundtrip-text.write.il"
|
${YOSYS} -p "read_verilog -sv everything.v; copy alu zzz; proc zzz; dump -o temp/roundtrip-text.dump.il; write_rtlil temp/roundtrip-text.write.il"
|
||||||
remove_empty_lines temp/roundtrip-text.dump.il
|
remove_empty_lines temp/roundtrip-text.dump.il
|
||||||
remove_empty_lines temp/roundtrip-text.write.il
|
remove_empty_lines temp/roundtrip-text.write.il
|
||||||
# Trim first line ("Generated by Yosys ...")
|
# Trim first line ("Generated by Yosys ...")
|
||||||
|
|
@ -19,13 +18,13 @@ tail -n +2 temp/roundtrip-text.write.il > temp/roundtrip-text.write-nogen.il
|
||||||
diff temp/roundtrip-text.dump.il temp/roundtrip-text.write-nogen.il
|
diff temp/roundtrip-text.dump.il temp/roundtrip-text.write-nogen.il
|
||||||
|
|
||||||
# Loading and writing it out again doesn't change the RTLIL
|
# Loading and writing it out again doesn't change the RTLIL
|
||||||
$YS -p "read_rtlil temp/roundtrip-text.dump.il; write_rtlil temp/roundtrip-text.reload.il"
|
${YOSYS} -p "read_rtlil temp/roundtrip-text.dump.il; write_rtlil temp/roundtrip-text.reload.il"
|
||||||
remove_empty_lines temp/roundtrip-text.reload.il
|
remove_empty_lines temp/roundtrip-text.reload.il
|
||||||
tail -n +2 temp/roundtrip-text.reload.il > temp/roundtrip-text.reload-nogen.il
|
tail -n +2 temp/roundtrip-text.reload.il > temp/roundtrip-text.reload-nogen.il
|
||||||
diff temp/roundtrip-text.dump.il temp/roundtrip-text.reload-nogen.il
|
diff temp/roundtrip-text.dump.il temp/roundtrip-text.reload-nogen.il
|
||||||
|
|
||||||
# Hashing differences don't change the RTLIL
|
# Hashing differences don't change the RTLIL
|
||||||
$YS --hash-seed=2345678 -p "read_rtlil temp/roundtrip-text.dump.il; write_rtlil temp/roundtrip-text.reload-hash.il"
|
${YOSYS} --hash-seed=2345678 -p "read_rtlil temp/roundtrip-text.dump.il; write_rtlil temp/roundtrip-text.reload-hash.il"
|
||||||
remove_empty_lines temp/roundtrip-text.reload-hash.il
|
remove_empty_lines temp/roundtrip-text.reload-hash.il
|
||||||
tail -n +2 temp/roundtrip-text.reload-hash.il > temp/roundtrip-text.reload-hash-nogen.il
|
tail -n +2 temp/roundtrip-text.reload-hash.il > temp/roundtrip-text.reload-hash-nogen.il
|
||||||
diff temp/roundtrip-text.dump.il temp/roundtrip-text.reload-hash-nogen.il
|
diff temp/roundtrip-text.dump.il temp/roundtrip-text.reload-hash-nogen.il
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
../../yosys -p 'read_verilog alu_sub.v; proc; hierarchy -auto-top; sdc side-effects.sdc' | grep 'This should print something:
|
${YOSYS} -p 'read_verilog alu_sub.v; proc; hierarchy -auto-top; sdc side-effects.sdc' | grep 'This should print something:
|
||||||
YOSYS_SDC_MAGIC_NODE_0'
|
YOSYS_SDC_MAGIC_NODE_0'
|
||||||
|
|
|
||||||
|
|
@ -2,4 +2,4 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
! ../../yosys -p 'read_verilog alu_sub.v; proc; hierarchy -auto-top; sdc get_foo.sdc' 2>&1 | grep 'Unknown getter'
|
! ${YOSYS} -p 'read_verilog alu_sub.v; proc; hierarchy -auto-top; sdc get_foo.sdc' 2>&1 | grep 'Unknown getter'
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ generate_sby() {
|
||||||
|
|
||||||
if [ -f $prefix.ys ]; then
|
if [ -f $prefix.ys ]; then
|
||||||
set -x
|
set -x
|
||||||
$PWD/../../yosys -q -e "Assert .* failed." -s $prefix.ys
|
${YOSYS} -q -e "Assert .* failed." -s $prefix.ys
|
||||||
elif [ -f $prefix.sv ]; then
|
elif [ -f $prefix.sv ]; then
|
||||||
generate_sby pass > ${prefix}_pass.sby
|
generate_sby pass > ${prefix}_pass.sby
|
||||||
generate_sby fail > ${prefix}_fail.sby
|
generate_sby fail > ${prefix}_fail.sby
|
||||||
|
|
@ -67,8 +67,8 @@ elif [ -f $prefix.sv ]; then
|
||||||
# Check that SBY is up to date enough for this yosys version
|
# Check that SBY is up to date enough for this yosys version
|
||||||
if sby --help | grep -q -e '--status'; then
|
if sby --help | grep -q -e '--status'; then
|
||||||
set -x
|
set -x
|
||||||
sby --yosys $PWD/../../yosys -f ${prefix}_pass.sby
|
sby --yosys ${YOSYS} -f ${prefix}_pass.sby
|
||||||
sby --yosys $PWD/../../yosys -f ${prefix}_fail.sby
|
sby --yosys ${YOSYS} -f ${prefix}_fail.sby
|
||||||
else
|
else
|
||||||
echo "sva test '${prefix}' requires an up to date SBY, skipping"
|
echo "sva test '${prefix}' requires an up to date SBY, skipping"
|
||||||
fi
|
fi
|
||||||
|
|
@ -78,7 +78,7 @@ else
|
||||||
# Check that SBY is up to date enough for this yosys version
|
# Check that SBY is up to date enough for this yosys version
|
||||||
if sby --help | grep -q -e '--status'; then
|
if sby --help | grep -q -e '--status'; then
|
||||||
set -x
|
set -x
|
||||||
sby --yosys $PWD/../../yosys -f ${prefix}.sby
|
sby --yosys ${YOSYS} -f ${prefix}.sby
|
||||||
else
|
else
|
||||||
echo "sva test '${prefix}' requires an up to date SBY, skipping"
|
echo "sva test '${prefix}' requires an up to date SBY, skipping"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ if ! which timeout ; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! timeout 10 ../../yosys bug5495.v -p 'hierarchy; techmap; abc -script bug5495.abc' ; then
|
if ! timeout 10 ${YOSYS} bug5495.v -p 'hierarchy; techmap; abc -script bug5495.abc' ; then
|
||||||
echo "Yosys failed to complete"
|
echo "Yosys failed to complete"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
exec ../tools/autotest.sh -G -j $@ -p 'proc; opt; memory -nomap; techmap -map ../mem_simple_4x1_map.v;; techmap; opt; abc;; stat' mem_simple_4x1_uut.v
|
exec ../tools/autotest.sh -G -Y ${YOSYS} -j $@ -p 'proc; opt; memory -nomap; techmap -map ../mem_simple_4x1_map.v;; techmap; opt; abc;; stat' mem_simple_4x1_uut.v
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
../../yosys -p 'read_verilog recursive.v; hierarchy -top top; techmap -map recursive_map.v -max_iter 1; select -assert-count 2 t:sub; select -assert-count 2 t:bar'
|
${YOSYS} -p 'read_verilog recursive.v; hierarchy -top top; techmap -map recursive_map.v -max_iter 1; select -assert-count 2 t:sub; select -assert-count 2 t:bar'
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ warn_iverilog_git=false
|
||||||
firrtl2verilog=""
|
firrtl2verilog=""
|
||||||
xfirrtl="../xfirrtl"
|
xfirrtl="../xfirrtl"
|
||||||
abcprog="$toolsdir/../../yosys-abc"
|
abcprog="$toolsdir/../../yosys-abc"
|
||||||
|
yosysprog="$toolsdir/../../yosys"
|
||||||
|
|
||||||
exec {lock}<"$toolsdir"; flock "$lock" 1>&2
|
exec {lock}<"$toolsdir"; flock "$lock" 1>&2
|
||||||
if [ ! -f "$toolsdir/cmp_tbdata" -o "$toolsdir/cmp_tbdata.c" -nt "$toolsdir/cmp_tbdata" ]; then
|
if [ ! -f "$toolsdir/cmp_tbdata" -o "$toolsdir/cmp_tbdata.c" -nt "$toolsdir/cmp_tbdata" ]; then
|
||||||
|
|
@ -31,7 +32,7 @@ if [ ! -f "$toolsdir/cmp_tbdata" -o "$toolsdir/cmp_tbdata.c" -nt "$toolsdir/cmp_
|
||||||
fi
|
fi
|
||||||
flock -u "$lock"; exec {lock}>&-
|
flock -u "$lock"; exec {lock}>&-
|
||||||
|
|
||||||
while getopts xmGl:wkjvref:s:p:n:S:I:A:-: opt; do
|
while getopts xmGl:wkjvref:s:p:n:S:I:A:Y:-: opt; do
|
||||||
case "$opt" in
|
case "$opt" in
|
||||||
x)
|
x)
|
||||||
use_xsim=true ;;
|
use_xsim=true ;;
|
||||||
|
|
@ -70,6 +71,8 @@ while getopts xmGl:wkjvref:s:p:n:S:I:A:-: opt; do
|
||||||
minclude_opts="$minclude_opts +incdir+$OPTARG" ;;
|
minclude_opts="$minclude_opts +incdir+$OPTARG" ;;
|
||||||
A)
|
A)
|
||||||
abcprog="$OPTARG" ;;
|
abcprog="$OPTARG" ;;
|
||||||
|
Y)
|
||||||
|
yosysprog="$OPTARG" ;;
|
||||||
-)
|
-)
|
||||||
case "${OPTARG}" in
|
case "${OPTARG}" in
|
||||||
xfirrtl)
|
xfirrtl)
|
||||||
|
|
@ -159,7 +162,7 @@ do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f ../${bn}_tb.v ]; then
|
if [ ! -f ../${bn}_tb.v ]; then
|
||||||
"$toolsdir"/../../yosys -f "$frontend $include_opts -D_AUTOTB" -b "test_autotb $autotb_opts" -o ${bn}_tb.v ${bn}_ref.${refext}
|
$yosysprog -f "$frontend $include_opts -D_AUTOTB" -b "test_autotb $autotb_opts" -o ${bn}_tb.v ${bn}_ref.${refext}
|
||||||
else
|
else
|
||||||
cp ../${bn}_tb.v ${bn}_tb.v
|
cp ../${bn}_tb.v ${bn}_tb.v
|
||||||
fi
|
fi
|
||||||
|
|
@ -173,7 +176,7 @@ do
|
||||||
|
|
||||||
test_count=0
|
test_count=0
|
||||||
test_passes() {
|
test_passes() {
|
||||||
"$toolsdir"/../../yosys -b "verilog $backend_opts" -o ${bn}_syn${test_count}.v "$@"
|
$yosysprog -b "verilog $backend_opts" -o ${bn}_syn${test_count}.v "$@"
|
||||||
touch ${bn}.iverilog
|
touch ${bn}.iverilog
|
||||||
compile_and_run ${bn}_tb_syn${test_count} ${bn}_out_syn${test_count} \
|
compile_and_run ${bn}_tb_syn${test_count} ${bn}_out_syn${test_count} \
|
||||||
${bn}_tb.v ${bn}_syn${test_count}.v "${libs[@]}" \
|
${bn}_tb.v ${bn}_syn${test_count}.v "${libs[@]}" \
|
||||||
|
|
@ -203,7 +206,7 @@ do
|
||||||
test_passes -f "$frontend $include_opts" -p "hierarchy; synth -run coarse; techmap; opt; abc -dff" ${bn}_ref.${refext}
|
test_passes -f "$frontend $include_opts" -p "hierarchy; synth -run coarse; techmap; opt; abc -dff" ${bn}_ref.${refext}
|
||||||
if [ -n "$firrtl2verilog" ]; then
|
if [ -n "$firrtl2verilog" ]; then
|
||||||
if test -z "$xfirrtl" || ! grep "$fn" "$xfirrtl" ; then
|
if test -z "$xfirrtl" || ! grep "$fn" "$xfirrtl" ; then
|
||||||
"$toolsdir"/../../yosys -b "firrtl" -o ${bn}_ref.fir -f "$frontend $include_opts" -p "prep; proc; opt -nodffe -nosdff; fsm; opt; memory; opt -full -fine; pmuxtree" ${bn}_ref.${refext}
|
$yosysprog -b "firrtl" -o ${bn}_ref.fir -f "$frontend $include_opts" -p "prep; proc; opt -nodffe -nosdff; fsm; opt; memory; opt -full -fine; pmuxtree" ${bn}_ref.${refext}
|
||||||
$firrtl2verilog -i ${bn}_ref.fir -o ${bn}_ref.fir.v
|
$firrtl2verilog -i ${bn}_ref.fir -o ${bn}_ref.fir.v
|
||||||
test_passes -f "$frontend $include_opts" -p "hierarchy; proc; opt -nodffe -nosdff; fsm; opt; memory; opt -full -fine" ${bn}_ref.fir.v
|
test_passes -f "$frontend $include_opts" -p "hierarchy; proc; opt -nodffe -nosdff; fsm; opt; memory; opt -full -fine" ${bn}_ref.fir.v
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -ex
|
set -ex
|
||||||
../../yosys -q -o async_syn.v -r uut -p 'synth; rename uut syn' async.v
|
${YOSYS} -q -o async_syn.v -r uut -p 'synth; rename uut syn' async.v
|
||||||
../../yosys -q -o async_prp.v -r uut -p 'prep; rename uut prp' async.v
|
${YOSYS} -q -o async_prp.v -r uut -p 'prep; rename uut prp' async.v
|
||||||
../../yosys -q -o async_a2s.v -r uut -p 'prep; async2sync; rename uut a2s' async.v
|
${YOSYS} -q -o async_a2s.v -r uut -p 'prep; async2sync; rename uut a2s' async.v
|
||||||
../../yosys -q -o async_ffl.v -r uut -p 'prep; clk2fflogic; rename uut ffl' async.v
|
${YOSYS} -q -o async_ffl.v -r uut -p 'prep; clk2fflogic; rename uut ffl' async.v
|
||||||
iverilog -o async_sim -DTESTBENCH async.v async_???.v
|
iverilog -o async_sim -DTESTBENCH async.v async_???.v
|
||||||
vvp -N async_sim > async.out
|
vvp -N async_sim > async.out
|
||||||
tail async.out
|
tail async.out
|
||||||
|
|
|
||||||
|
|
@ -35,18 +35,18 @@ module top #(
|
||||||
endmodule
|
endmodule
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
if ../../yosys -q -p 'verific -sv chparam1.sv'; then
|
if ${YOSYS} -q -p 'verific -sv chparam1.sv'; then
|
||||||
../../yosys -q -p 'verific -sv chparam1.sv; hierarchy -chparam X 123123123 -top top; prep -flatten' \
|
${YOSYS} -q -p 'verific -sv chparam1.sv; hierarchy -chparam X 123123123 -top top; prep -flatten' \
|
||||||
-p 'async2sync' \
|
-p 'async2sync' \
|
||||||
-p 'sat -verify -prove-asserts -show-ports -set din[0] 1' \
|
-p 'sat -verify -prove-asserts -show-ports -set din[0] 1' \
|
||||||
-p 'sat -falsify -prove-asserts -show-ports -set din[0] 0'
|
-p 'sat -falsify -prove-asserts -show-ports -set din[0] 0'
|
||||||
|
|
||||||
../../yosys -q -p 'verific -sv chparam2.sv; hierarchy -chparam X 123123123 -top top; prep -flatten' \
|
${YOSYS} -q -p 'verific -sv chparam2.sv; hierarchy -chparam X 123123123 -top top; prep -flatten' \
|
||||||
-p 'async2sync' \
|
-p 'async2sync' \
|
||||||
-p 'sat -verify -prove-asserts -show-ports -set din[0] 1' \
|
-p 'sat -verify -prove-asserts -show-ports -set din[0] 1' \
|
||||||
-p 'sat -falsify -prove-asserts -show-ports -set din[0] 0'
|
-p 'sat -falsify -prove-asserts -show-ports -set din[0] 0'
|
||||||
fi
|
fi
|
||||||
../../yosys -q -p 'read_verilog -sv chparam2.sv; hierarchy -chparam X 123123123 -top top; prep -flatten' \
|
${YOSYS} -q -p 'read_verilog -sv chparam2.sv; hierarchy -chparam X 123123123 -top top; prep -flatten' \
|
||||||
-p 'async2sync' \
|
-p 'async2sync' \
|
||||||
-p 'sat -verify -prove-asserts -show-ports -set din[0] 1' \
|
-p 'sat -verify -prove-asserts -show-ports -set din[0] 1' \
|
||||||
-p 'sat -falsify -prove-asserts -show-ports -set din[0] 0'
|
-p 'sat -falsify -prove-asserts -show-ports -set din[0] 0'
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@ set -e
|
||||||
|
|
||||||
# TODO: when sim gets native $check support, remove the -DNO_ASSERT here
|
# TODO: when sim gets native $check support, remove the -DNO_ASSERT here
|
||||||
echo Running yosys sim
|
echo Running yosys sim
|
||||||
../../yosys -q -p "
|
${YOSYS} -q -p "
|
||||||
read_verilog -formal -DNO_ASSERT clk2fflogic_effects.sv
|
read_verilog -formal -DNO_ASSERT clk2fflogic_effects.sv
|
||||||
hierarchy -top top; proc;;
|
hierarchy -top top; proc;;
|
||||||
|
|
||||||
tee -q -o clk2fflogic_effects.sim.log sim -q -n 32
|
tee -q -o clk2fflogic_effects.sim.log sim -q -n 32
|
||||||
"
|
"
|
||||||
echo Running yosys clk2fflogic sim
|
echo Running yosys clk2fflogic sim
|
||||||
../../yosys -q -p "
|
${YOSYS} -q -p "
|
||||||
read_verilog -formal clk2fflogic_effects.sv
|
read_verilog -formal clk2fflogic_effects.sv
|
||||||
hierarchy -top top; proc;;
|
hierarchy -top top; proc;;
|
||||||
clk2fflogic;;
|
clk2fflogic;;
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@ DIR=$(cd "$(dirname "$0")" && pwd)
|
||||||
BASEDIR=$(cd "$DIR/../.." && pwd)
|
BASEDIR=$(cd "$DIR/../.." && pwd)
|
||||||
rm -f "$DIR/ezcmdline_plugin.so"
|
rm -f "$DIR/ezcmdline_plugin.so"
|
||||||
chmod +x "$DIR/ezcmdline_dummy_solver"
|
chmod +x "$DIR/ezcmdline_dummy_solver"
|
||||||
CXXFLAGS=$("$BASEDIR/yosys-config" --cxxflags)
|
CXXFLAGS=$(${YOSYS_CONFIG} --cxxflags)
|
||||||
DATDIR=$("$BASEDIR/yosys-config" --datdir)
|
DATDIR=$(${YOSYS_CONFIG} --datdir)
|
||||||
DATDIR=${DATDIR//\//\\\/}
|
DATDIR=${DATDIR//\//\\\/}
|
||||||
CXXFLAGS=${CXXFLAGS//$DATDIR/..\/..\/share}
|
CXXFLAGS=${CXXFLAGS//$DATDIR/..\/..\/share}
|
||||||
"$BASEDIR/yosys-config" --exec --cxx ${CXXFLAGS} -I"$BASEDIR" --ldflags -shared -o "$DIR/ezcmdline_plugin.so" "$DIR/ezcmdline_plugin.cc"
|
${YOSYS_CONFIG} --exec --cxx ${CXXFLAGS} -I"$BASEDIR" --ldflags -shared -o "$DIR/ezcmdline_plugin.so" "$DIR/ezcmdline_plugin.cc"
|
||||||
"$BASEDIR/yosys" -m "$DIR/ezcmdline_plugin.so" -p "ezcmdline_test -cmd $DIR/ezcmdline_dummy_solver" | grep -q "ezcmdline_test passed!"
|
${YOSYS} -m "$DIR/ezcmdline_plugin.so" -p "ezcmdline_test -cmd $DIR/ezcmdline_dummy_solver" | grep -q "ezcmdline_test passed!"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo -n " TOP first - "
|
echo -n " TOP first - "
|
||||||
../../yosys -s - <<- EOY | grep "Automatically selected TOP as design top module"
|
${YOSYS} -s - <<- EOY | grep "Automatically selected TOP as design top module"
|
||||||
read_verilog << EOV
|
read_verilog << EOV
|
||||||
module TOP(a, y);
|
module TOP(a, y);
|
||||||
input a;
|
input a;
|
||||||
|
|
@ -23,7 +23,7 @@ echo -n " TOP first - "
|
||||||
EOY
|
EOY
|
||||||
|
|
||||||
echo -n " TOP last - "
|
echo -n " TOP last - "
|
||||||
../../yosys -s - <<- EOY | grep "Automatically selected TOP as design top module"
|
${YOSYS} -s - <<- EOY | grep "Automatically selected TOP as design top module"
|
||||||
read_verilog << EOV
|
read_verilog << EOV
|
||||||
module aoi12(a, y);
|
module aoi12(a, y);
|
||||||
input a;
|
input a;
|
||||||
|
|
@ -42,7 +42,7 @@ echo -n " TOP last - "
|
||||||
EOY
|
EOY
|
||||||
|
|
||||||
echo -n " no explicit top - "
|
echo -n " no explicit top - "
|
||||||
../../yosys -s - <<- EOY | grep "Automatically selected noTop as design top module."
|
${YOSYS} -s - <<- EOY | grep "Automatically selected noTop as design top module."
|
||||||
read_verilog << EOV
|
read_verilog << EOV
|
||||||
module aoi12(a, y);
|
module aoi12(a, y);
|
||||||
input a;
|
input a;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
trap 'echo "ERROR in logger_cmd_error.sh" >&2; exit 1' ERR
|
trap 'echo "ERROR in logger_cmd_error.sh" >&2; exit 1' ERR
|
||||||
|
|
||||||
(../../yosys -v 3 -C <<EOF
|
(${YOSYS} -v 3 -C <<EOF
|
||||||
yosys -import
|
yosys -import
|
||||||
hierarchy -top nonexistent
|
hierarchy -top nonexistent
|
||||||
EOF
|
EOF
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ runTest() {
|
||||||
want="$2"
|
want="$2"
|
||||||
shift 2
|
shift 2
|
||||||
echo "running '$desc' with args $@"
|
echo "running '$desc' with args $@"
|
||||||
output=`../../yosys -q "$@" 2>&1`
|
output=`${YOSYS} -q "$@" 2>&1`
|
||||||
if [ $? -ne 1 ]; then
|
if [ $? -ne 1 ]; then
|
||||||
fail "exit code for '$desc' was not 1"
|
fail "exit code for '$desc' was not 1"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
set -e
|
set -e
|
||||||
rm -f plugin.so
|
rm -f plugin.so
|
||||||
rm -rf plugin_search
|
rm -rf plugin_search
|
||||||
CXXFLAGS=$(../../yosys-config --cxxflags)
|
CXXFLAGS=$(${YOSYS_CONFIG} --cxxflags)
|
||||||
DATDIR=$(../../yosys-config --datdir)
|
DATDIR=$(${YOSYS_CONFIG} --datdir)
|
||||||
DATDIR=${DATDIR//\//\\\/}
|
DATDIR=${DATDIR//\//\\\/}
|
||||||
CXXFLAGS=${CXXFLAGS//$DATDIR/..\/..\/share}
|
CXXFLAGS=${CXXFLAGS//$DATDIR/..\/..\/share}
|
||||||
../../yosys-config --exec --cxx ${CXXFLAGS} --ldflags -shared -o plugin.so plugin.cc
|
${YOSYS_CONFIG} --exec --cxx ${CXXFLAGS} --ldflags -shared -o plugin.so plugin.cc
|
||||||
../../yosys -m ./plugin.so -p "test" | grep -q "Plugin test passed!"
|
${YOSYS} -m ./plugin.so -p "test" | grep -q "Plugin test passed!"
|
||||||
mkdir -p plugin_search
|
mkdir -p plugin_search
|
||||||
mv plugin.so plugin_search/plugin.so
|
mv plugin.so plugin_search/plugin.so
|
||||||
YOSYS_PLUGIN_PATH=$PWD/plugin_search ../../yosys -m plugin.so -p "test" | grep -q "Plugin test passed!"
|
YOSYS_PLUGIN_PATH=$PWD/plugin_search ${YOSYS} -m plugin.so -p "test" | grep -q "Plugin test passed!"
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
trap 'echo "ERROR in sv_implicit_ports.sh" >&2; exit 1' ERR
|
trap 'echo "ERROR in sv_implicit_ports.sh" >&2; exit 1' ERR
|
||||||
|
|
||||||
# Simple case
|
# Simple case
|
||||||
../../yosys -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:\$add" - <<EOT
|
${YOSYS} -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:\$add" - <<EOT
|
||||||
module add(input [7:0] a, input [7:0] b, output [7:0] q);
|
module add(input [7:0] a, input [7:0] b, output [7:0] q);
|
||||||
assign q = a + b;
|
assign q = a + b;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
@ -15,7 +15,7 @@ endmodule
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
# Generate block
|
# Generate block
|
||||||
../../yosys -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:\$add" - <<EOT
|
${YOSYS} -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:\$add" - <<EOT
|
||||||
module add(input [7:0] a, input [7:0] b, output [7:0] q);
|
module add(input [7:0] a, input [7:0] b, output [7:0] q);
|
||||||
assign q = a + b;
|
assign q = a + b;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
@ -31,7 +31,7 @@ endmodule
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
# Missing wire
|
# Missing wire
|
||||||
((../../yosys -f "verilog -sv" -qp "hierarchy -top top" - || true) <<EOT
|
((${YOSYS} -f "verilog -sv" -qp "hierarchy -top top" - || true) <<EOT
|
||||||
module add(input [7:0] a, input [7:0] b, output [7:0] q);
|
module add(input [7:0] a, input [7:0] b, output [7:0] q);
|
||||||
assign q = a + b;
|
assign q = a + b;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
@ -43,7 +43,7 @@ EOT
|
||||||
) 2>&1 | grep -F "ERROR: No matching wire for implicit port connection \`b' of cell top.add_i (add)." > /dev/null
|
) 2>&1 | grep -F "ERROR: No matching wire for implicit port connection \`b' of cell top.add_i (add)." > /dev/null
|
||||||
|
|
||||||
# Incorrectly sized wire
|
# Incorrectly sized wire
|
||||||
((../../yosys -f "verilog -sv" -qp "hierarchy -top top" - || true) <<EOT
|
((${YOSYS} -f "verilog -sv" -qp "hierarchy -top top" - || true) <<EOT
|
||||||
module add(input [7:0] a, input [7:0] b, output [7:0] q);
|
module add(input [7:0] a, input [7:0] b, output [7:0] q);
|
||||||
assign q = a + b;
|
assign q = a + b;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
@ -56,7 +56,7 @@ EOT
|
||||||
) 2>&1 | grep -F "ERROR: Width mismatch between wire (7 bits) and port (8 bits) for implicit port connection \`b' of cell top.add_i (add)." > /dev/null
|
) 2>&1 | grep -F "ERROR: Width mismatch between wire (7 bits) and port (8 bits) for implicit port connection \`b' of cell top.add_i (add)." > /dev/null
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
../../yosys -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:\$add" - <<EOT
|
${YOSYS} -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:\$add" - <<EOT
|
||||||
module add(input [7:0] a = 8'd00, input [7:0] b = 8'd01, output [7:0] q);
|
module add(input [7:0] a = 8'd00, input [7:0] b = 8'd01, output [7:0] q);
|
||||||
assign q = a + b;
|
assign q = a + b;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
@ -67,7 +67,7 @@ endmodule
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
# Parameterised module
|
# Parameterised module
|
||||||
../../yosys -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:\$add" - <<EOT
|
${YOSYS} -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:\$add" - <<EOT
|
||||||
module add #(parameter N=3) (input [N-1:0] a = 8'd00, input [N-1:0] b = 8'd01, output [N-1:0] q);
|
module add #(parameter N=3) (input [N-1:0] a = 8'd00, input [N-1:0] b = 8'd01, output [N-1:0] q);
|
||||||
assign q = a + b;
|
assign q = a + b;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
@ -78,7 +78,7 @@ endmodule
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
# Parameterised blackbox module
|
# Parameterised blackbox module
|
||||||
../../yosys -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:add" - <<EOT
|
${YOSYS} -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:add" - <<EOT
|
||||||
(* blackbox *)
|
(* blackbox *)
|
||||||
module add #(parameter N=3) (input [N-1:0] a, b, output [N-1:0] q);
|
module add #(parameter N=3) (input [N-1:0] a, b, output [N-1:0] q);
|
||||||
endmodule
|
endmodule
|
||||||
|
|
@ -89,7 +89,7 @@ endmodule
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
# Parameterised blackbox module - incorrect width
|
# Parameterised blackbox module - incorrect width
|
||||||
((../../yosys -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:add" - || true) <<EOT
|
((${YOSYS} -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:add" - || true) <<EOT
|
||||||
(* blackbox *)
|
(* blackbox *)
|
||||||
module add #(parameter N=3) (input [N-1:0] a, b, output [N-1:0] q);
|
module add #(parameter N=3) (input [N-1:0] a, b, output [N-1:0] q);
|
||||||
endmodule
|
endmodule
|
||||||
|
|
@ -101,7 +101,7 @@ EOT
|
||||||
) 2>&1 | grep -F "ERROR: Width mismatch between wire (8 bits) and port (6 bits) for implicit port connection \`q' of cell top.add_i (add)." > /dev/null
|
) 2>&1 | grep -F "ERROR: Width mismatch between wire (8 bits) and port (6 bits) for implicit port connection \`q' of cell top.add_i (add)." > /dev/null
|
||||||
|
|
||||||
# Mixed implicit and explicit 1
|
# Mixed implicit and explicit 1
|
||||||
../../yosys -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:\$add" - <<EOT
|
${YOSYS} -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:\$add" - <<EOT
|
||||||
module add(input [7:0] a, input [7:0] b, output [7:0] q);
|
module add(input [7:0] a, input [7:0] b, output [7:0] q);
|
||||||
assign q = a + b;
|
assign q = a + b;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
@ -112,7 +112,7 @@ endmodule
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
# Mixed implicit and explicit 2
|
# Mixed implicit and explicit 2
|
||||||
(../../yosys -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:\$add" - <<EOT
|
(${YOSYS} -f "verilog -sv" -qp "prep -flatten -top top; select -assert-count 1 t:\$add" - <<EOT
|
||||||
module add(input [7:0] a, input [7:0] b, output [7:0] q);
|
module add(input [7:0] a, input [7:0] b, output [7:0] q);
|
||||||
assign q = a + b;
|
assign q = a + b;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
trap 'echo "ERROR in svalways.sh" >&2; exit 1' ERR
|
trap 'echo "ERROR in svalways.sh" >&2; exit 1' ERR
|
||||||
|
|
||||||
# Good case
|
# Good case
|
||||||
../../yosys -f "verilog -sv" -qp proc - <<EOT
|
${YOSYS} -f "verilog -sv" -qp proc - <<EOT
|
||||||
module top(input clk, en, d, output reg p, q, r);
|
module top(input clk, en, d, output reg p, q, r);
|
||||||
|
|
||||||
always_ff @(posedge clk)
|
always_ff @(posedge clk)
|
||||||
|
|
@ -19,7 +19,7 @@ endmodule
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
# Incorrect always_comb syntax
|
# Incorrect always_comb syntax
|
||||||
((../../yosys -f "verilog -sv" -qp proc -|| true) <<EOT
|
((${YOSYS} -f "verilog -sv" -qp proc -|| true) <<EOT
|
||||||
module top(input d, output reg q);
|
module top(input d, output reg q);
|
||||||
|
|
||||||
always_comb @(d)
|
always_comb @(d)
|
||||||
|
|
@ -30,7 +30,7 @@ EOT
|
||||||
) 2>&1 | grep -F "<stdin>:3: ERROR: syntax error, unexpected '@'" > /dev/null
|
) 2>&1 | grep -F "<stdin>:3: ERROR: syntax error, unexpected '@'" > /dev/null
|
||||||
|
|
||||||
# Incorrect use of always_comb
|
# Incorrect use of always_comb
|
||||||
((../../yosys -f "verilog -sv" -qp proc -|| true) <<EOT
|
((${YOSYS} -f "verilog -sv" -qp proc -|| true) <<EOT
|
||||||
module top(input en, d, output reg q);
|
module top(input en, d, output reg q);
|
||||||
|
|
||||||
always_comb
|
always_comb
|
||||||
|
|
@ -41,7 +41,7 @@ EOT
|
||||||
) 2>&1 | grep -F "ERROR: Latch inferred for signal \`\\top.\\q' from always_comb process" > /dev/null
|
) 2>&1 | grep -F "ERROR: Latch inferred for signal \`\\top.\\q' from always_comb process" > /dev/null
|
||||||
|
|
||||||
# Incorrect use of always_latch
|
# Incorrect use of always_latch
|
||||||
((../../yosys -f "verilog -sv" -qp proc -|| true) <<EOT
|
((${YOSYS} -f "verilog -sv" -qp proc -|| true) <<EOT
|
||||||
module top(input en, d, output reg q);
|
module top(input en, d, output reg q);
|
||||||
|
|
||||||
always_latch
|
always_latch
|
||||||
|
|
@ -52,7 +52,7 @@ EOT
|
||||||
) 2>&1 | grep -F "ERROR: No latch inferred for signal \`\\top.\\q' from always_latch process" > /dev/null
|
) 2>&1 | grep -F "ERROR: No latch inferred for signal \`\\top.\\q' from always_latch process" > /dev/null
|
||||||
|
|
||||||
# Incorrect use of always_ff
|
# Incorrect use of always_ff
|
||||||
((../../yosys -f "verilog -sv" -qp proc -|| true) <<EOT
|
((${YOSYS} -f "verilog -sv" -qp proc -|| true) <<EOT
|
||||||
module top(input en, d, output reg q);
|
module top(input en, d, output reg q);
|
||||||
|
|
||||||
always_ff @(*)
|
always_ff @(*)
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ run() {
|
||||||
right=$4
|
right=$4
|
||||||
echo "a=$alt s=$span l=$left r=$right"
|
echo "a=$alt s=$span l=$left r=$right"
|
||||||
|
|
||||||
../../yosys -q \
|
${YOSYS} -q \
|
||||||
-DALT=$alt \
|
-DALT=$alt \
|
||||||
-DSPAN=$span \
|
-DSPAN=$span \
|
||||||
-DLEFT=$left \
|
-DLEFT=$left \
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
# only works with read_verilog
|
# only works with read_verilog
|
||||||
yosys='../../yosys -f verilog'
|
yosyscmd="${YOSYS} -f verilog"
|
||||||
test='-p hierarchy'
|
test='-p hierarchy'
|
||||||
subdir=subdir
|
subdir=subdir
|
||||||
source=local_include.v
|
source=local_include.v
|
||||||
|
|
@ -11,20 +11,20 @@ include=temp_foo.v
|
||||||
|
|
||||||
# no include file should fail
|
# no include file should fail
|
||||||
rm -f $include
|
rm -f $include
|
||||||
echo "logger -expect error $include 1; read_verilog $source" | $yosys
|
echo "logger -expect error $include 1; read_verilog $source" | $yosyscmd
|
||||||
|
|
||||||
# both files local
|
# both files local
|
||||||
echo 'module foo (input a, output b); assign b = a; endmodule' > $include
|
echo 'module foo (input a, output b); assign b = a; endmodule' > $include
|
||||||
$yosys $test $source
|
$yosyscmd $test $source
|
||||||
|
|
||||||
# include local to cwd
|
# include local to cwd
|
||||||
mkdir -p $subdir
|
mkdir -p $subdir
|
||||||
cp $source $subdir
|
cp $source $subdir
|
||||||
$yosys $test $subdir/$source
|
$yosyscmd $test $subdir/$source
|
||||||
|
|
||||||
# include local to source
|
# include local to source
|
||||||
mv $include $subdir
|
mv $include $subdir
|
||||||
$yosys $test $subdir/$source
|
$yosyscmd $test $subdir/$source
|
||||||
|
|
||||||
# include local to source, and source is given as an absolute path
|
# include local to source, and source is given as an absolute path
|
||||||
$yosys $test $(pwd)/$subdir/$source
|
$yosyscmd $test $(pwd)/$subdir/$source
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ if "clean" in steps:
|
||||||
|
|
||||||
|
|
||||||
def yosys(command):
|
def yosys(command):
|
||||||
subprocess.check_call(["../../../yosys", "-Qp", command])
|
subprocess.check_call([os.environ.get("YOSYS", "../../yosys"), "-Qp", command])
|
||||||
|
|
||||||
def remove(file):
|
def remove(file):
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue