chipsalliance / uhdm-integration-tests Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Add support for building using edalize
Parsing ibex_core.sv
file using UHDM frontend in verilator results in Verilator internal fault, sorry
, gdb bt:
Program received signal SIGSEGV, Segmentation fault.
0x0000555556088696 in vpi_handle ()
#0 0x0000555556088696 in vpi_handle ()
#1 0x0000555555bbfd10 in UhdmAst::getDType (obj_h=0x555558617920, visited=..., top_nodes=0x7fffffff9f60) at ../UhdmAst.cpp:264
#2 0x0000555555bc4bff in UhdmAst::visit_object (obj_h=0x555558617920, visited=..., top_nodes=0x7fffffff9f60) at ../UhdmAst.cpp:634
#3 0x0000555555bbdfa9 in UhdmAst::visit_one_to_many(std::vector<int, std::allocator<int> >, unsigned int*, std::set<UHDM::BaseClass const*, std::less<UHDM::BaseClass const*>, std::allocator<UHDM::BaseClass const*> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, AstNodeModule*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AstNodeModule*> > >*, std::function<void (AstNode*)> const&) (childrenNodeTypes=..., parentHandle=0x555557006d60, visited=..., top_nodes=0x7fffffff9f60, f=...) at ../UhdmAst.cpp:32
#4 0x0000555555bc5a1c in UhdmAst::visit_object (obj_h=0x555557006d60, visited=..., top_nodes=0x7fffffff9f60) at ../UhdmAst.cpp:793
#5 0x0000555555bbdfa9 in UhdmAst::visit_one_to_many(std::vector<int, std::allocator<int> >, unsigned int*, std::set<UHDM::BaseClass const*, std::less<UHDM::BaseClass const*>, std::allocator<UHDM::BaseClass const*> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, AstNodeModule*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AstNodeModule*> > >*, std::function<void (AstNode*)> const&) (childrenNodeTypes=..., parentHandle=0x555557f06520, visited=..., top_nodes=0x7fffffff9f60, f=...) at ../UhdmAst.cpp:32
#6 0x0000555555bc56e7 in UhdmAst::visit_object (obj_h=0x555557f06520, visited=..., top_nodes=0x7fffffff9f60) at ../UhdmAst.cpp:722
#7 0x0000555555bbdfa9 in UhdmAst::visit_one_to_many(std::vector<int, std::allocator<int> >, unsigned int*, std::set<UHDM::BaseClass const*, std::less<UHDM::BaseClass const*>, std::allocator<UHDM::BaseClass const*> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, AstNodeModule*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AstNodeModule*> > >*, std::function<void (AstNode*)> const&) (childrenNodeTypes=..., parentHandle=0x555556d55670, visited=..., top_nodes=0x7fffffff9f60, f=...) at ../UhdmAst.cpp:32
#8 0x0000555555bdf453 in UhdmAst::visit_designs (designs=..., coverage_report_stream=..., symp=0x7fffffffa1b0) at ../UhdmAst.cpp:3108
#9 0x0000555555913ab8 in V3Global::readFiles (this=0x55555669f6c0 <v3Global>) at ../V3Global.cpp:140
#10 0x0000555555754b07 in verilate (argString=...) at ../Verilator.cpp:576
#11 0x00005555557561e3 in main (argc=18, argv=0x7fffffffcf88, env=0x7fffffffd020) at ../Verilator.cpp:706
Yosys uhdm frontend fails on parsing 2D arrays in module IOs. It is creating AST node, that can't by simplified to AST_CONSTANT. It makes yosys to fail on detecting width with message:
Unsupported expression on dynamic range select on signal
Removing unused module ibex_multdiv_slow.sv
(#48) from file list makes clkgen_xil7series.sv
to pass yosys, but it fails in vivado with:
ERROR: [DRC PDRC-43] PLL_adv_ClkFrequency_div_no_dclk: The computed value 500.000 MHz (CLKIN1_PERIOD, net io_clk_buf) for the VCO operating frequency of the PLLE2_ADV site PLLE2_ADV_X1Y1 (cell clkgen/pll) falls outside the operating range of the PLL VCO frequency for this device (800.000 - 1600.000 MHz). The computed value is (CLKFBOUT_MULT_F * 1000 / (CLKINx_PERIOD * DIVCLK_DIVIDE)). Please adjust either the input period CLKINx_PERIOD (10.000000), multiplication factor CLKFBOUT_MULT_F (5) or the division factor DIVCLK_DIVIDE (1), in order to achieve a VCO frequency within the rated operating range for this device.
It is caused because PLLE2_ADV
module is defined outside files, that we are parsing with Surelog and UHDM do not have information about parameters. I created separate issue for this in Surelog: https://github.com/alainmarcel/Surelog/issues/893
ConcatWidth
is failing in Yosys with the error:
ERROR: Assert `block != nullptr' failed in frontends/ast/genrtlil.cc:251.
Parsing ibex_simple_system.sv
file using UHDM frontend in verilator results in Verilator internal fault, sorry
, gdb bt:
Program received signal SIGSEGV, Segmentation fault.
0x0000555556088696 in vpi_handle ()
#0 0x0000555556088696 in vpi_handle ()
#1 0x0000555555bbfd10 in UhdmAst::getDType (obj_h=0x5555575c48f0, visited=..., top_nodes=0x7fffffff9f60) at ../UhdmAst.cpp:264
#2 0x0000555555bc4bff in UhdmAst::visit_object (obj_h=0x5555575c48f0, visited=..., top_nodes=0x7fffffff9f60) at ../UhdmAst.cpp:634
#3 0x0000555555bbdfa9 in UhdmAst::visit_one_to_many(std::vector<int, std::allocator<int> >, unsigned int*, std::set<UHDM::BaseClass const*, std::less<UHDM::BaseClass const*>, std::allocator<UHDM::BaseClass const*> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, AstNodeModule*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AstNodeModule*> > >*, std::function<void (AstNode*)> const&) (childrenNodeTypes=..., parentHandle=0x555556d701e0, visited=..., top_nodes=0x7fffffff9f60, f=...) at ../UhdmAst.cpp:32
#4 0x0000555555bc5a1c in UhdmAst::visit_object (obj_h=0x555556d701e0, visited=..., top_nodes=0x7fffffff9f60) at ../UhdmAst.cpp:793
#5 0x0000555555bbdfa9 in UhdmAst::visit_one_to_many(std::vector<int, std::allocator<int> >, unsigned int*, std::set<UHDM::BaseClass const*, std::less<UHDM::BaseClass const*>, std::allocator<UHDM::BaseClass const*> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, AstNodeModule*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AstNodeModule*> > >*, std::function<void (AstNode*)> const&) (childrenNodeTypes=..., parentHandle=0x5555583b4400, visited=..., top_nodes=0x7fffffff9f60, f=...) at ../UhdmAst.cpp:32
#6 0x0000555555bc56e7 in UhdmAst::visit_object (obj_h=0x5555583b4400, visited=..., top_nodes=0x7fffffff9f60) at ../UhdmAst.cpp:722
#7 0x0000555555bbdfa9 in UhdmAst::visit_one_to_many(std::vector<int, std::allocator<int> >, unsigned int*, std::set<UHDM::BaseClass const*, std::less<UHDM::BaseClass const*>, std::allocator<UHDM::BaseClass const*> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, AstNodeModule*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AstNodeModule*> > >*, std::function<void (AstNode*)> const&) (childrenNodeTypes=..., parentHandle=0x555556cfc690, visited=..., top_nodes=0x7fffffff9f60, f=...) at ../UhdmAst.cpp:32
#8 0x0000555555bdf453 in UhdmAst::visit_designs (designs=..., coverage_report_stream=..., symp=0x7fffffffa1b0) at ../UhdmAst.cpp:3108
#9 0x0000555555913ab8 in V3Global::readFiles (this=0x55555669f6c0 <v3Global>) at ../V3Global.cpp:140
#10 0x0000555555754b07 in verilate (argString=...) at ../Verilator.cpp:576
#11 0x00005555557561e3 in main (argc=18, argv=0x7fffffffcf88, env=0x7fffffffd020) at ../Verilator.cpp:706
OneThis
CI test is failing. Surelog is not generating correct UHDM. When surelog issue will be resolved, we should revisit this test. Surelog issue: alainmarcel/Surelog#938
Add support for building Ibex parsed by Surelog using symbiflow-toolchain
The purpose of this issue is to track progress in successful simulation of Earlgrey in Verilator using Surelog.
List of Earlgrey files to check:
Parsing ibex_pmp.sv
using UHDM frontend fails with message:
ibex_pmp.sv:113: ERROR: Left hand side of 1st expression of generate for-loop is not a register!
Up to now FSMBsp13
test was disabled in CI. For this test, full-simulation never worked (only ast-xml
). It should be revisited and checked if current version of Surelog allows to fix this test.
There is no error on parsing top_artya7.sv
file by yosys, vivado is failing with:
ERROR: [Place 30-415] IO Placement failed due to overutilization. This design contains 256 I/O ports
while the target device: 7a35ti package: csg324, contains only 210 available user I/O. The target device has 210 usable I/O pins of which 0 are already occupied by user-locked I/Os.
ERROR: [Place 30-68] Instance $iopadmap$ibex_core.data_rdata_i_9 (IBUF) is not placed
Placer failed with error: 'IO Clock Placer failed'
AnonStructs test case is failing in Yosys with
ERROR: Unknown identifier `' used as type name
This is an example of an anonymous typespec, it seems it is not handled properly.
ibex_tracer_pkg.sv
is unparsable because of missing import statement in Surelog: https://github.com/alainmarcel/Surelog/issues/1023
We need to check status of every file (Is it parsable by Surelog? Is it parsable by Yosys? Is vivado is generating bitstream? Is bitstream works on HW?). This issue is to track this progress.
Log from CI: https://github.com/antmicro/yosys/runs/1790510504?check_suite_focus=true
Segmentation fault (core dumped)
Makefile:44: recipe for target 'uhdm/yosys/test-ast' failed
make: *** [uhdm/yosys/test-ast] Error 139
Error: Process completed with exit code 2.
There is no error on parsing ibex_fetch_fifo.sv
file (in both yosys and vivado), but generated bitstream is not working on hardware.
When parsing prim_generic_ram_1p.sv
yosys is killed by OOM because of using more then 32 GB of ram.
It is caused by setting mem
size to Depth
parameter. We need to check if Depth
parameter is set correctly here and if yes, we need to verify, why yosys is using so much memory.
EnumInPackate
and StructInPackage
CI tests are failing due to lack of support for input/output that is a typedef:
%Error-UNSUPPORTED: Unsupported: Member call on object 'VARREF 'var1'' which is a 'BASICDTYPE 'logic''
: ... In instance work_dut
%Error: Internal Error: ../V3Width.cpp:3239: How can LHS be untyped?
: ... In instance work_dut
%Warning-WIDTH: Operator ASSIGNW expects 1 bits on the Assign RHS, but Assign RHS's CONST '?32?sh7' generates 32 or 3 bits.
: ... In instance work_dut
... Use "/* verilator lint_off WIDTH */" and lint_on around source to disable this message.
%Warning-WIDTH: Operator ASSIGNW expects 1 bits on the Assign RHS, but Assign RHS's CONST '?32?sh38' generates 32 or 6 bits.
: ... In instance work_dut
%Warning-WIDTH: Operator ASSIGNW expects 1 bits on the Assign RHS, but Assign RHS's ENUMITEMREF 'SIXTH' generates 7 bits.
: ... In instance work_dut
%Warning-WIDTH: Operator ASSIGNW expects 1 bits on the Assign RHS, but Assign RHS's ENUMITEMREF 'SEVENTH' generates 8 bits.
: ... In instance work_dut
%Error: Exiting due to 4 warning(s)
Yosys uhdm frontend wrong generates AST for 'for' loop, it automatically simplify expressions to AST_CONSTANT, but simplify expects, that this expression will be AST_IDENTIFIER.
The Surelog tests generate surelog.uhdm.chk.html
files that render input files with annotations about parts that are not covered yet. This helps estimate progress and drill down particular parts.
These are generated as part of running the Surelog tests.
It would be good to have these HTML files available as part of the CI output, copied to github.io pages for easy linking (similar to how we generate the sv-tests output).
@alaindargelas is the surelog.uhdm.chk.html the only one I need to look out for ? IIRC you also had an overview list that shows the coverage percentages.
The Ibex submodule in this repository is 5 months old.
The last commit that still works appears to be: lowRISC/ibex@8953d82
The following change breaks the build:
lowRISC/ibex@1a9545b#diff-c179907737569996eff5a53763dee97f323251b0bed22743345126b62f71d6ccR723
Errors from yosys:
1. Executing UHDM frontend.
ERROR: Encountered unhandled typespec in handle parameter: 638, node str: \MSTATUS_RST_VAL
make: *** [Makefile:13: lowrisc_ibex_top_artya7_surelog_0.1.blif] Error 1
It looks as though localparams
are not properly handled here.
We need to:
There is no error on parsing ibex_decoder.sv
file (in both yosys and vivado), but generated bitstream is not working on hardware.
There is no error on parsing ibex_alu.sv
file (in both yosys and vivado), but generated bitstream is not working on hardware.
As described in issue https://github.com/alainmarcel/Surelog/issues/937, verilog standard do not allows to set parameters directly from command-line.
We should find a way to set SRAMInitFile
in another way.
Parsing simulator_ctrl.sv
file using UHDM frontend in verilator results in:
%Error: Missing arguments for $display-like format
%Error: Exiting due to 1 error(s)
Yosys has the ability to build Python wrappers for a large part of the RTLIL and it produces a libyosys.so when ENABLE_PYOSYS := 1
However, with UHDM this doesn't work because it is making a static library. Is there a way to also build a .so so that a libyosys.so can be built? Here is the relevant error msg:
[100%] Building yosys
[100%] Building libyosys.so
/usr/bin/ld: ./../image/lib/uhdm/libkj.a(exception.c++.o): relocation R_X86_64_TPOFF32 against `_ZN2kj12_GLOBAL__N_1L19threadLocalCallbackE' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: ./../image/lib/uhdm/libuhdm.a(clone_tree.cpp.o): relocation R_X86_64_PC32 against symbol `_ZTVN4UHDM9attributeE' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [Makefile:678: libyosys.so] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/home/macd/oroad/code/uhdm-integration/yosys'
make: *** [Makefile:32: yosys/yosys] Error 2
The purpose of this issue is to monitor and get everything right while moving GH actions from uhdm-integration to verilator and yosys (in Antmicro forks). The following PRs need to be merged (in this order):
Remember to update name of submodules branches after every merge, because they are pointing now to WiP branches.
/cc @tgorochowik
Parsing bus.sv file using UHDM frontend in verilator results in:
%Warning-WIDTH: Operator ASSIGN expects 1 bits on the Assign RHS, but Assign RHS's SEL generates 2 bits. [1/45665]
: ... In instance ibex_simple_system.u_bus
... Use "/* verilator lint_off WIDTH */" and lint_on around source to disable this message.
%Warning-WIDTH: Operator EQ expects 2 bits on the RHS, but RHS's VARREF 'device_sel_req' generates 1 bits.
: ... In instance ibex_simple_system.u_bus
%Error: ../src/lowrisc_ibex_ibex_simple_system_0/rtl/ibex_simple_system.sv:161:6: Slices of arrays in assignments have different unpacked dimensions, 1 versus 3
: ... In instance ibex_simple_system.cfg_device_addr_mask
161 | .cfg_device_addr_mask
| ^~~~~~~~~~~~~~~~~~~~
%Error: ../src/lowrisc_ibex_ibex_simple_system_0/rtl/ibex_simple_system.sv:160:6: Slices of arrays in assignments have different unpacked dimensions, 1 versus 3
: ... In instance ibex_simple_system.cfg_device_addr_base
160 | .cfg_device_addr_base,
| ^~~~~~~~~~~~~~~~~~~~
%Error: ../src/lowrisc_ibex_ibex_simple_system_0/rtl/ibex_simple_system.sv:158:27: Slices of arrays in assignments have different unpacked dimensions, 1 versus 3
: ... In instance ibex_simple_system.device_err
158 | .device_err_i (device_err ),
| ^~~~~~~~~~
%Error: ../src/lowrisc_ibex_ibex_simple_system_0/rtl/ibex_simple_system.sv:157:27: Slices of arrays in assignments have different unpacked dimensions, 1 versus 3
: ... In instance ibex_simple_system.device_rdata
157 | .device_rdata_i (device_rdata ),
| ^~~~~~~~~~~~
%Error: ../src/lowrisc_ibex_ibex_simple_system_0/rtl/ibex_simple_system.sv:156:27: Slices of arrays in assignments have different unpacked dimensions, 1 versus 3
: ... In instance ibex_simple_system.device_rvalid
156 | .device_rvalid_i (device_rvalid),
| ^~~~~~~~~~~~~
%Error: ../src/lowrisc_ibex_ibex_simple_system_0/rtl/ibex_simple_system.sv:155:6: Slices of arrays in assignments have different unpacked dimensions, 3 versus 1
: ... In instance ibex_simple_system.__Vcellout__u_bus__device_wdata_o
155 | .device_wdata_o (device_wdata ),
| ^~~~~~~~~~~~~~
%Error: ../src/lowrisc_ibex_ibex_simple_system_0/rtl/ibex_simple_system.sv:154:6: Slices of arrays in assignments have different unpacked dimensions, 3 versus 1
: ... In instance ibex_simple_system.__Vcellout__u_bus__device_be_o
154 | .device_be_o (device_be ),
| ^~~~~~~~~~~
%Error: ../src/lowrisc_ibex_ibex_simple_system_0/rtl/ibex_simple_system.sv:153:6: Slices of arrays in assignments have different unpacked dimensions, 3 versus 1
: ... In instance ibex_simple_system.__Vcellout__u_bus__device_we_o
153 | .device_we_o (device_we ),
| ^~~~~~~~~~~
%Error: ../src/lowrisc_ibex_ibex_simple_system_0/rtl/ibex_simple_system.sv:152:6: Slices of arrays in assignments have different unpacked dimensions, 3 versus 1
: ... In instance ibex_simple_system.__Vcellout__u_bus__device_addr_o
152 | .device_addr_o (device_addr ),
| ^~~~~~~~~~~~~
%Error: ../src/lowrisc_ibex_ibex_simple_system_0/rtl/ibex_simple_system.sv:151:6: Slices of arrays in assignments have different unpacked dimensions, 3 versus 1
: ... In instance ibex_simple_system.__Vcellout__u_bus__device_req_o
151 | .device_req_o (device_req ),
| ^~~~~~~~~~~~
%Warning-COMBDLY: Delayed assignments (<=) in non-clocked (non flop or latch) block
... Suggest blocking assignments (=)
*** See the manual before disabling this,
else you may end up with different sim results.
%Error: Exiting due to 10 error(s), 3 warning(s)
Generated bitstream doesn't work on HW after parsing ibex_ex_block.sv using Surelog/UHDM.
Test case https://github.com/alainmarcel/uhdm-integration/blob/master/tests/MultipleNets/top.sv fails with error:
../tests/MultipleNets/top.sv:15: ERROR: Signal `packed_array_logic_net` with non-constant width!
It seems that there's some problem with handling packed array nets.
There is no error on parsing ibex_prefetch_buffer.sv
file (in both yosys and vivado), but generated bitstream is not working as expected on hardware. 2 leds lights up, but they are not blinking.
Yosys uhdm frontend sometimes doesn't correctly name wire type and then yosys can't find its definition (and detect width):
ERROR: Failed to detect width of signal access
There are some problems in Yosys that appeared with the newest Surelog:
vpiStructVar
),simplify
,IndexedPartSelect
, PartSelect
, VarSelect
are failing.I suspect at least a few of these share their root cause.
There is no error on parsing ram_1p.sv
file (in both yosys and vivado), but generated bitstream is not working on hardware.
Test case https://github.com/alainmarcel/uhdm-integration/blob/master/tests/MultiplePrints/top.sv fails with error message:
ERROR: Encountered unhandled object type: 616
This is becasue vpiStringVar
is not handled in the frontend.
Parsing ram_2p.sv
(with prim_generic_ram_2p.sv
and prim_ram_2p.sv
) file using UHDM frontend in verilator results in:
%Error-UNSUPPORTED: Unsupported: Slice of non-constant bounds
: ... In instance ibex_simple_system.u_ram.u_ram..u_impl_generic
%Error: Internal Error: ../V3Width.cpp:1015: AstSelPlus should disappear after widthSel
: ... In instance ibex_simple_system.u_ram.u_ram..u_impl_generic
... See the manual and https://verilator.org for more assistance.
Parsing ibex_id_stage.sv
file results in floating-point exception
in yosys.
Parsing ibex_core_tracing.sv
file using UHDM frontend in verilator results in Verilator internal fault, sorry
, gdb bt:
Program received signal SIGSEGV, Segmentation fault.
0x0000555556088696 in vpi_handle ()
#0 0x0000555556088696 in vpi_handle ()
#1 0x0000555555bbfd10 in UhdmAst::getDType (obj_h=0x555556e1e6a0, visited=..., top_nodes=0x7fffffff9f60) at ../UhdmAst.cpp:264
#2 0x0000555555bc4bff in UhdmAst::visit_object (obj_h=0x555556e1e6a0, visited=..., top_nodes=0x7fffffff9f60) at ../UhdmAst.cpp:634
#3 0x0000555555bbdfa9 in UhdmAst::visit_one_to_many(std::vector<int, std::allocator<int> >, unsigned int*, std::set<UHDM::BaseClass const*, std::less<UHDM::BaseClass const*>, std::allocator<UHDM::BaseClass const*> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, AstNodeModule*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AstNodeModule*> > >*, std::function<void (AstNode*)> const&) (childrenNodeTypes=..., parentHandle=0x5555582fe8b0, visited=..., top_nodes=0x7fffffff9f60, f=...) at ../UhdmAst.cpp:32
#4 0x0000555555bc5a1c in UhdmAst::visit_object (obj_h=0x5555582fe8b0, visited=..., top_nodes=0x7fffffff9f60) at ../UhdmAst.cpp:793
#5 0x0000555555bbdfa9 in UhdmAst::visit_one_to_many(std::vector<int, std::allocator<int> >, unsigned int*, std::set<UHDM::BaseClass const*, std::less<UHDM::BaseClass const*>, std::allocator<UHDM::BaseClass const*> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, AstNodeModule*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AstNodeModule*> > >*, std::function<void (AstNode*)> const&) (childrenNodeTypes=..., parentHandle=0x55555812a920, visited=..., top_nodes=0x7fffffff9f60, f=...) at ../UhdmAst.cpp:32
#6 0x0000555555bc56e7 in UhdmAst::visit_object (obj_h=0x55555812a920, visited=..., top_nodes=0x7fffffff9f60) at ../UhdmAst.cpp:722
#7 0x0000555555bbdfa9 in UhdmAst::visit_one_to_many(std::vector<int, std::allocator<int> >, unsigned int*, std::set<UHDM::BaseClass const*, std::less<UHDM::BaseClass const*>, std::allocator<UHDM::BaseClass const*> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, AstNodeModule*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, AstNodeModule*> > >*, std::function<void (AstNode*)> const&) (childrenNodeTypes=..., parentHandle=0x555556d02f80, visited=..., top_nodes=0x7fffffff9f60, f=...) at ../UhdmAst.cpp:32
#8 0x0000555555bdf453 in UhdmAst::visit_designs (designs=..., coverage_report_stream=..., symp=0x7fffffffa1b0) at ../UhdmAst.cpp:3108
#9 0x0000555555913ab8 in V3Global::readFiles (this=0x55555669f6c0 <v3Global>) at ../V3Global.cpp:140
#10 0x0000555555754b07 in verilate (argString=...) at ../Verilator.cpp:576
#11 0x00005555557561e3 in main (argc=18, argv=0x7fffffffcf88, env=0x7fffffffd020) at ../Verilator.cpp:706
Dependabot encountered the following error when parsing your .dependabot/config.yaml
:
Automerging is not enabled for this account. You can enable it from the [account settings](https://app.dependabot.com/accounts/alainmarcel/settings) screen in your Dependabot dashboard.
Please update the config file to conform with Dependabot's specification using our docs and online validator.
There is no error on parsing ibex_if_stage.sv
file (in both yosys and vivado), but generated bitstream is not working on hardware.
Generated bitstream doesn't work on HW after parsing ibex_multdiv_fast.sv using Surelog/UHDM.
Parsing ibex_register_file_latch.sv
file using UHDM frontend in verilator results in %Error: Exiting due to 1 error(s)
(without any more message), running with --debug
flag says:
%Error: Exiting due to 1 error(s)
- V3Ast.cpp:1120: Dumping ./Vibex_simple_system_990_final.tree
%Error: Internal Error: ../V3Broken.cpp:253: Broken link in node->dtypep() to 0x5555578f12f0
-node: VAR (AEEB) <e51363> {d0aa} @dt=(BEEB)@(nw1) file INPUT PORT
%Error: Internal Error: Aborting since under --debug
Parsing ibex_cs_registers.sv
with ibex_csr.sv
and ibex_counter.sv
(ibex_cs_registers.sv
is using them, so they need to be parsed together) file using UHDM frontend in verilator results in:
%Error: Duplicate declaration of TYPEDEF 'status_t': 'status_t'
... Location of original declaration
%Error: Duplicate declaration of enum value: PRIV_LVL_H
... Location of original declaration
%Error: Duplicate declaration of enum value: PRIV_LVL_M
... Location of original declaration
%Error: Duplicate declaration of enum value: PRIV_LVL_S
... Location of original declaration
%Error: Duplicate declaration of enum value: PRIV_LVL_U
... Location of original declaration
%Error: Duplicate declaration of TYPEDEF 'dcsr_t': 'dcsr_t'
... Location of original declaration
%Error: Duplicate declaration of TYPEDEF 'status_stk_t': 'status_stk_t'
... Location of original declaration
%Warning-IMPLICIT: Signal definition not found, creating implicitly: 'rd_error_o'
... Use "/* verilator lint_off IMPLICIT */" and lint_on around source to disable this message.
%Error: Exiting due to 7 error(s), 1 warning(s)
Assignment-patterns AST differs when used in parameters parameters (there is no AST_ASSIGN when assigning to parameter). Currently yosys frontend fails on parsing this type of parameters and creates parameter without any children. This ends up with segmentation fault.
We exceed Travis time here for vcddiff tests, see i.e. https://travis-ci.com/github/antmicro/uhdm-integration/jobs/318125699
Please set up the Google side for kokoro and I'll do the in-repo config then.
Yosys uhdm frontend doesn't distinguish usage of module from a definition and it is always creating module if it can't find one. Example:
image/bin/surelog -parse -sverilog tests/ibex/ibex/build/lowrisc_ibex_top_artya7_0.1/src/lowrisc_ibex_fpga_xilinx_shared_0/rtl/fpga/xilinx/clkgen_xil7series.sv
yosys/yosys -p "read_uhdm -debug slpp_all/surelog.uhdm"
UHDM Output:
|vpiModule:
\_module: work@clkgen_xil7series::BUFG (work@clkgen_xil7series.clk_fb_bufg) clkgen_xil7series.sv:63 : , parent:work@clkgen_xil7series
|vpiDefName:work@clkgen_xil7series::BUFG
|vpiName:clk_fb_bufg
|vpiFullName:work@clkgen_xil7series.clk_fb_bufg
|vpiPort:
\_port: (I), parent:work@clkgen_xil7series.clk_fb_bufg
|vpiName:I
|vpiHighConn:
\_ref_obj: (clk_fb_unbuf), line:64
|vpiName:clk_fb_unbuf
|vpiActual:
\_logic_net: (@@BAD_SYMBOL@@), line:16, parent:work@clkgen_xil7series
|vpiPort:
\_port: (O), parent:work@clkgen_xil7series.clk_fb_bufg
|vpiName:O
|vpiHighConn:
\_ref_obj: (clk_fb_buf), line:65
|vpiName:clk_fb_buf
|vpiActual:
\_logic_net: (@@BAD_SYMBOL@@), line:15, parent:work@clkgen_xil7series
Yosys AST output:
AST_MODULE <slpp_all/surelog.uhdm:0.0-0.0> [0x5574caf67130] str='\clkgen_xil7series::BUFG' basic_prep
AST_WIRE <slpp_all/surelog.uhdm:0.0-0.0> [0x5574caf67f60] str='\I' basic_prep port=30 range=[0:0]
AST_WIRE <slpp_all/surelog.uhdm:0.0-0.0> [0x5574caf680a0] str='\O' basic_prep port=31 range=[0:0]
clkgen_xil7series::BUFG
module was created, but it was just used in clkgen_xil7series.sv
.
VarSelect test fails with:
%Error: Extracting 32 bits from only 8 bit number
: ... In instance work_top
%Warning-WIDTH: Operator ASSIGNW expects 4 bits on the Assign RHS, but Assign RHS's SEL generates 32 bits.
: ... In instance work_top
... Use "/* verilator lint_off WIDTH */" and lint_on around source to disable this message.
%Error: Exiting due to 1 error(s), 1 warning(s)
Commit that fixed this 2 tests: antmicro/yosys@46ec8e6
makes earlgrey to do not work on HW after generating bitstream.
Current version of yosys (https://github.com/antmicro/yosys/tree/uhdm-yosys) drops this commit as we shouldn't add is_interface
attribute to all whitebox
/blackbox
modules, but rather get this information from UHDM.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.