mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-23 00:55:32 +00:00
Merge https://github.com/YosysHQ/yosys into read_aiger
This commit is contained in:
commit
03a533d102
9 changed files with 349 additions and 100 deletions
|
@ -11,4 +11,4 @@ do
|
|||
done
|
||||
shift "$((OPTIND-1))"
|
||||
|
||||
exec ${MAKE:-make} -f ../tools/autotest.mk $seed EXTRA_FLAGS="-e" *.v
|
||||
exec ${MAKE:-make} -f ../tools/autotest.mk $seed EXTRA_FLAGS+="-e" *.v
|
||||
|
|
24
tests/asicworld/xfirrtl
Normal file
24
tests/asicworld/xfirrtl
Normal file
|
@ -0,0 +1,24 @@
|
|||
# This file contains the names of verilog files to exclude from verilog to FIRRTL regression tests due to known failures.
|
||||
code_hdl_models_arbiter.v error: reg rst; cannot be driven by primitives or continuous assignment.
|
||||
code_hdl_models_clk_div_45.v yosys issue: 2nd PMUXTREE pass yields: ERROR: Negative edge clock on FF clk_div_45.$procdff$49.
|
||||
code_hdl_models_d_ff_gates.v combinational loop
|
||||
code_hdl_models_d_latch_gates.v combinational loop
|
||||
code_hdl_models_dff_async_reset.v $adff
|
||||
code_hdl_models_tff_async_reset.v $adff
|
||||
code_hdl_models_uart.v $adff
|
||||
code_specman_switch_fabric.v subfield assignment (bits() <= ...)
|
||||
code_tidbits_asyn_reset.v $adff
|
||||
code_tidbits_reg_seq_example.v $adff
|
||||
code_verilog_tutorial_always_example.v empty module
|
||||
code_verilog_tutorial_escape_id.v make_id issues (name begins with a digit)
|
||||
code_verilog_tutorial_explicit.v firrtl backend bug (empty module)
|
||||
code_verilog_tutorial_first_counter.v error: reg rst; cannot be driven by primitives or continuous assignment.
|
||||
code_verilog_tutorial_fsm_full.v error: reg reset; cannot be driven by primitives or continuous assignment.
|
||||
code_verilog_tutorial_if_else.v empty module (everything is under 'always @ (posedge clk)')
|
||||
[code_verilog_tutorial_n_out_primitive.v empty module
|
||||
code_verilog_tutorial_parallel_if.v empty module (everything is under 'always @ (posedge clk)')
|
||||
code_verilog_tutorial_simple_function.v empty module (no hardware)
|
||||
code_verilog_tutorial_simple_if.v empty module (everything is under 'always @ (posedge clk)')
|
||||
code_verilog_tutorial_task_global.v empty module (everything is under 'always @ (posedge clk)')
|
||||
code_verilog_tutorial_v2k_reg.v empty module
|
||||
code_verilog_tutorial_which_clock.v $adff
|
26
tests/simple/xfirrtl
Normal file
26
tests/simple/xfirrtl
Normal file
|
@ -0,0 +1,26 @@
|
|||
# This file contains the names of verilog files to exclude from verilog to FIRRTL regression tests due to known failures.
|
||||
arraycells.v inst id[0] of
|
||||
dff_different_styles.v
|
||||
generate.v combinational loop
|
||||
hierdefparam.v inst id[0] of
|
||||
i2c_master_tests.v $adff
|
||||
macros.v drops modules
|
||||
mem2reg.v drops modules
|
||||
mem_arst.v $adff
|
||||
memory.v $adff
|
||||
multiplier.v inst id[0] of
|
||||
muxtree.v drops modules
|
||||
omsp_dbg_uart.v $adff
|
||||
operators.v $pow
|
||||
paramods.v subfield assignment (bits() <= ...)
|
||||
partsel.v drops modules
|
||||
process.v drops modules
|
||||
realexpr.v drops modules
|
||||
scopes.v original verilog issues ( -x where x isn't declared signed)
|
||||
sincos.v $adff
|
||||
specify.v no code (empty module generates error
|
||||
subbytes.v $adff
|
||||
task_func.v drops modules
|
||||
values.v combinational loop
|
||||
vloghammer.v combinational loop
|
||||
wreduce.v original verilog issues ( -x where x isn't declared signed)
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
EXTRA_FLAGS=
|
||||
SEED=
|
||||
|
||||
# Don't bother defining default values for SEED and EXTRA_FLAGS.
|
||||
# Their "natural" default values should be sufficient,
|
||||
# and they may be overridden in the environment.
|
||||
ifneq ($(strip $(SEED)),)
|
||||
SEEDOPT=-S$(SEED)
|
||||
endif
|
||||
|
|
|
@ -17,12 +17,18 @@ scriptfiles=""
|
|||
scriptopt=""
|
||||
toolsdir="$(cd $(dirname $0); pwd)"
|
||||
warn_iverilog_git=false
|
||||
# The following are used in verilog to firrtl regression tests.
|
||||
# Typically these will be passed as environment variables:
|
||||
#EXTRA_FLAGS="--firrtl2verilog 'java -cp /.../firrtl/utils/bin/firrtl.jar firrtl.Driver'"
|
||||
# The tests are skipped if firrtl2verilog is the empty string (the default).
|
||||
firrtl2verilog=""
|
||||
xfirrtl="../xfirrtl"
|
||||
|
||||
if [ ! -f $toolsdir/cmp_tbdata -o $toolsdir/cmp_tbdata.c -nt $toolsdir/cmp_tbdata ]; then
|
||||
( set -ex; ${CC:-gcc} -Wall -o $toolsdir/cmp_tbdata $toolsdir/cmp_tbdata.c; ) || exit 1
|
||||
fi
|
||||
|
||||
while getopts xmGl:wkjvref:s:p:n:S:I:B: opt; do
|
||||
while getopts xmGl:wkjvref:s:p:n:S:I:B:-: opt; do
|
||||
case "$opt" in
|
||||
x)
|
||||
use_xsim=true ;;
|
||||
|
@ -61,8 +67,24 @@ while getopts xmGl:wkjvref:s:p:n:S:I:B: opt; do
|
|||
minclude_opts="$minclude_opts +incdir+$OPTARG" ;;
|
||||
B)
|
||||
backend_opts="$backend_opts $OPTARG" ;;
|
||||
-)
|
||||
case "${OPTARG}" in
|
||||
xfirrtl)
|
||||
xfirrtl="${!OPTIND}"
|
||||
OPTIND=$(( $OPTIND + 1 ))
|
||||
;;
|
||||
firrtl2verilog)
|
||||
firrtl2verilog="${!OPTIND}"
|
||||
OPTIND=$(( $OPTIND + 1 ))
|
||||
;;
|
||||
*)
|
||||
if [ "$OPTERR" == 1 ] && [ "${optspec:0:1}" != ":" ]; then
|
||||
echo "Unknown option --${OPTARG}" >&2
|
||||
fi
|
||||
;;
|
||||
esac;;
|
||||
*)
|
||||
echo "Usage: $0 [-x|-m] [-G] [-w] [-k] [-j] [-v] [-r] [-e] [-l libs] [-f frontend] [-s script] [-p cmdstring] [-n iters] [-S seed] [-I incdir] [-B backend_opt] verilog-files\n" >&2
|
||||
echo "Usage: $0 [-x|-m] [-G] [-w] [-k] [-j] [-v] [-r] [-e] [-l libs] [-f frontend] [-s script] [-p cmdstring] [-n iters] [-S seed] [-I incdir] [-B backend_opt] [--xfirrtl FIRRTL test exclude file] [--firrtl2verilog command to generate verilog from firrtl] verilog-files\n" >&2
|
||||
exit 1
|
||||
esac
|
||||
done
|
||||
|
@ -112,12 +134,18 @@ do
|
|||
fn=$(basename $fn)
|
||||
bn=$(basename $bn)
|
||||
|
||||
<<<<<<< HEAD
|
||||
if [[ "$ext" == "v" ]]; then
|
||||
egrep -v '^\s*`timescale' ../$fn > ${bn}_ref.${ext}
|
||||
else
|
||||
"$toolsdir"/../../yosys -f "$frontend $include_opts" -b "verilog" -o ${bn}_ref.v ../${fn}
|
||||
frontend="verilog"
|
||||
fi
|
||||
=======
|
||||
rm -f ${bn}_ref.fir
|
||||
|
||||
egrep -v '^\s*`timescale' ../$fn > ${bn}_ref.v
|
||||
>>>>>>> e45f62b0c56717a23099425f078d1e56212aa632
|
||||
|
||||
if [ ! -f ../${bn}_tb.v ]; then
|
||||
"$toolsdir"/../../yosys -f "$frontend $include_opts" -b "test_autotb $autotb_opts" -o ${bn}_tb.v ${bn}_ref.v
|
||||
|
@ -157,6 +185,13 @@ do
|
|||
else
|
||||
test_passes -f "$frontend $include_opts" -p "hierarchy; proc; opt; memory; opt; fsm; opt -full -fine" ${bn}_ref.v
|
||||
test_passes -f "$frontend $include_opts" -p "hierarchy; synth -run coarse; techmap; opt; abc -dff" ${bn}_ref.v
|
||||
if [ -n "$firrtl2verilog" ]; then
|
||||
if test -z "$xfirrtl" || ! grep "$fn" "$xfirrtl" ; then
|
||||
"$toolsdir"/../../yosys -b "firrtl" -o ${bn}_ref.fir -f "$frontend $include_opts" -p "prep -nordff; proc; opt; memory; opt; fsm; opt -full -fine; pmuxtree" ${bn}_ref.v
|
||||
$firrtl2verilog -i ${bn}_ref.fir -o ${bn}_ref.fir.v -X verilog
|
||||
test_passes -f "$frontend $include_opts" -p "hierarchy; proc; opt; memory; opt; fsm; opt -full -fine" ${bn}_ref.fir.v
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
touch ../${bn}.log
|
||||
}
|
||||
|
@ -169,14 +204,18 @@ do
|
|||
( set -ex; body; ) > ${bn}.err 2>&1
|
||||
fi
|
||||
|
||||
did_firrtl=""
|
||||
if [ -f ${bn}.out/${bn}_ref.fir ]; then
|
||||
did_firrtl="+FIRRTL "
|
||||
fi
|
||||
if [ -f ${bn}.log ]; then
|
||||
mv ${bn}.err ${bn}.log
|
||||
echo "${status_prefix}-> ok"
|
||||
echo "${status_prefix}${did_firrtl}-> ok"
|
||||
elif [ -f ${bn}.skip ]; then
|
||||
mv ${bn}.err ${bn}.skip
|
||||
echo "${status_prefix}-> skip"
|
||||
else
|
||||
echo "${status_prefix}-> ERROR!"
|
||||
echo "${status_prefix}${did_firrtl}-> ERROR!"
|
||||
if $warn_iverilog_git; then
|
||||
echo "Note: Make sure that 'iverilog' is an up-to-date git checkout of Icarus Verilog."
|
||||
fi
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue