lowRISC / opentitan

OpenTitan: Open source silicon root of trust
https://www.opentitan.org
Apache License 2.0
2.58k stars 775 forks source link

Flow error that dc is unsupported for job runtime extraction #16562

Closed gzyangcs closed 1 year ago

gzyangcs commented 1 year ago

I ran a dc synthesis flow but dvsim gives report below. The command i ran is "./util/dvsim/dvsim.py -t dc hw/top_earlgrey/syn/chip_earlgrey_asic_syn_cfg.hjson --purge --local" , which found at readme "OpenTitan Synthesis Flow".

INFO: [dvsim] [proj_root]: /home/guozhiyang/work/opentitan
INFO: [OneShotCfg] [scratch_path]: [chip_earlgrey_asic] [/home/guozhiyang/work/opentitan/scratch/master/chip_earlgrey_asic-syn-dc]
INFO: [OneShotCfg] Purging scratch path /home/guozhiyang/work/opentitan/scratch/master/chip_earlgrey_asic-syn-dc
WARNING: [Deploy] chip_earlgrey_asic:default: dc is unsupported for job runtime extraction. Using dvsim-maintained job_runtime instead.
ERROR: [Scheduler] [00:00:03]: [build]: [status] [chip_earlgrey_asic:default: F]
INFO: [SynCfg] looking for result data file at /home/guozhiyang/work/opentitan/scratch/master/chip_earlgrey_asic-syn-dc/default/results.hjson
WARNING: [SynCfg] [Errno 2] No such file or directory: '/home/guozhiyang/work/opentitan/scratch/master/chip_earlgrey_asic-syn-dc/default/results.hjson'
INFO: [FlowCfg] [results]: [chip_earlgrey_asic]:
## CHIP_EARLGREY_ASIC Synthesis Results

### Friday November 25 2022 01:48:41 UTC
### GitHub Revision: [`7c5837b7a`](https://github.com/lowrisc/opentitan/tree/7c5837b7ada5c32280c9c18b473388354766f807)
### Branch: master
### Synthesis Tool: DC

| Build Mode   |  Flow Warnings  |  Flow Errors  |  Analyze Warnings  |  Analyze Errors  |  Elab Warnings  |  Elab Errors  |  Compile Warnings  |  Compile Errors  |
|:-------------|:---------------:|:-------------:|:------------------:|:----------------:|:---------------:|:-------------:|:------------------:|:----------------:|
| default      |       --        |      1 E      |         --         |        --        |       --        |      --       |         --         |        --        |

### Circuit Complexity in [kGE]

No area report found

### Timing in [ns]

No timing report found

### Power Estimates in [mW]

No power report found

### Errors and Warnings for Build Mode `'default'`
#### Flow Errors

IOError: [Errno 2] No such file or directory: '/home/guozhiyang/work/opentitan/scratch/master/chip_earlgrey_asic-syn-dc/default/results.hjson'

INFO: [FlowCfg] [scratch_path]: [chip_earlgrey_asic] [/home/guozhiyang/work/opentitan/scratch/master/chip_earlgrey_asic-syn-dc]
ERROR: [dvsim] Errors were encountered in this run.

          [   legend    ]: [Q: queued, D: dispatched, P: passed, F: failed, K: killed, T: total]                                                                                                                                           
00:00:03  [    build    ]: [Q: 0, D: 0, P: 0, F: 1, K: 0, T: 1] 100%

Below is build.log

[Executing]:
make -f /home/guozhiyang/work/opentitan/hw/syn/tools/dvsim/syn.mk build build_cmd=dc_shell-xg-t build_dir=/home/guozhiyang/work/opentitan/scratch/master/top_earlgrey-syn-dc/default build_log=/home/guozhiyang/work/opentitan/scratch/master/top_earlgrey-syn-dc/default/synthesis.log build_opts='-f /home/guozhiyang/work/opentitan/hw/syn/tools/dc/run-syn.tcl' build_timeout_mins=None post_build_cmds='' pre_build_cmds='' proj_root=/home/guozhiyang/work/opentitan report_cmd=/home/guozhiyang/work/opentitan/hw/syn/tools/dc/parse-syn-report.py report_opts='--dut top_earlgrey --expand-modules top_earlgrey --expand-depth 1 --log-path /home/guozhiyang/work/opentitan/scratch/master/top_earlgrey-syn-dc/default --rep-path /home/guozhiyang/work/opentitan/scratch/master/top_earlgrey-syn-dc/default/REPORTS --out-dir /home/guozhiyang/work/opentitan/scratch/master/top_earlgrey-syn-dc/default --termination-stage compile' sv_flist_gen_cmd=fusesoc sv_flist_gen_dir=/home/guozhiyang/work/opentitan/scratch/master/top_earlgrey-syn-dc/default/syn-icarus sv_flist_gen_opts='--cores-root /home/guozhiyang/work/opentitan run --flag=fileset_top --target=syn --tool icarus --build-root=/home/guozhiyang/work/opentitan/scratch/master/top_earlgrey-syn-dc/default --setup lowrisc:systems:top_earlgrey:0.1'

[make]: gen_sv_flist
cd /home/guozhiyang/work/opentitan/scratch/master/top_earlgrey-syn-dc/default && fusesoc --cores-root /home/guozhiyang/work/opentitan run --flag=fileset_top --target=syn --tool icarus --build-root=/home/guozhiyang/work/opentitan/scratch/master/top_earlgrey-syn-dc/default --setup lowrisc:systems:top_earlgrey:0.1
WARNING: Parse error. Ignoring file /home/guozhiyang/work/opentitan/bazel-opentitan/fusesoc/tests/capi2_cores/misc/empty.core: Missing 'name' parameter
WARNING: Parse error. Ignoring file /home/guozhiyang/work/opentitan/fusesoc/tests/capi2_cores/misc/empty.core: Missing 'name' parameter
INFO: Preparing lowrisc:constants:jtag_id_pkg:0
INFO: Preparing lowrisc:constants:top_pkg:0
INFO: Preparing lowrisc:dv:crypto_prince_ref:0.1
INFO: Preparing lowrisc:dv:dv_fcov_macros:0
INFO: Preparing lowrisc:dv:dv_macros:0
INFO: Preparing lowrisc:dv:pins_if:0
INFO: Preparing lowrisc:dv:secded_enc:0
INFO: Preparing lowrisc:ibex:ibex_pkg:0.1
INFO: Preparing lowrisc:ip:entropy_src_pkg:0.1
INFO: Preparing lowrisc:ip:jtag_pkg:0.1
INFO: Preparing lowrisc:ip:spi_device_pkg:0.1
INFO: Preparing lowrisc:ip:usbdev_pkg:0.1
INFO: Preparing lowrisc:prim:assert:0.1
INFO: Preparing lowrisc:prim:cipher_pkg:0.1
INFO: Preparing lowrisc:prim:crc32:0
INFO: Preparing lowrisc:prim:pad_wrapper_pkg:0
INFO: Preparing lowrisc:prim:primgen:0.1
INFO: Preparing lowrisc:prim:ram_1p_pkg:0
INFO: Preparing lowrisc:prim:ram_2p_pkg:0
INFO: Preparing lowrisc:prim:rom_pkg:0
INFO: Preparing lowrisc:prim:sec_anchor:0.1
INFO: Preparing lowrisc:prim:secded:0.1
INFO: Preparing lowrisc:prim:subreg:0
INFO: Preparing lowrisc:prim:util_get_scramble_params:0
INFO: Preparing lowrisc:systems:top_earlgrey_pkg:0.1
INFO: Preparing lowrisc:tool:check_tool_requirements:0.1
INFO: Preparing lowrisc:dv:scramble_model:0
INFO: Preparing lowrisc:dv_verilator:memutil_dpi:0
INFO: Preparing lowrisc:ibex:ibex_icache:0.1
INFO: Preparing lowrisc:ip:rv_core_ibex_pkg:0.1
INFO: Preparing lowrisc:prim:arbiter:0
INFO: Preparing lowrisc:prim:cdc_rand_delay:0
INFO: Preparing lowrisc:prim:cipher:0
INFO: Preparing lowrisc:prim:count:0
INFO: Preparing lowrisc:prim:gf_mult:0
INFO: Preparing lowrisc:prim:lfsr:0.1
INFO: Preparing lowrisc:prim:max_tree:0
INFO: Preparing lowrisc:prim:msb_extend:0
INFO: Preparing lowrisc:prim:prim_dom_and_2share:0.1
INFO: Preparing lowrisc:prim:prim_pkg:0.1
INFO: Preparing lowrisc:prim:sparse_fsm:0
INFO: Preparing lowrisc:prim:sum_tree:0
INFO: Preparing lowrisc:prim:util:0.1
INFO: Preparing lowrisc:prim:xoshiro256pp:0
INFO: Preparing lowrisc:dv_verilator:memutil_dpi_scrambled:0
INFO: Preparing lowrisc:ip:lc_ctrl_state_pkg:0.1
INFO: Preparing lowrisc:prim:and2:0
INFO: Preparing lowrisc:prim:buf:0
INFO: Preparing lowrisc:prim:clock_buf:0
INFO: Preparing lowrisc:prim:clock_gating:0
INFO: Preparing lowrisc:prim:clock_inv:0
INFO: Preparing lowrisc:prim:clock_mux2:0
INFO: Preparing lowrisc:prim:flop:0
INFO: Preparing lowrisc:prim:flop_en:0
INFO: Preparing lowrisc:prim:onehot:0
INFO: Preparing lowrisc:prim:onehot_check:0
INFO: Preparing lowrisc:prim:pad_attr:0
INFO: Preparing lowrisc:prim:pad_wrapper:0
INFO: Preparing lowrisc:prim:ram_1p:0
INFO: Preparing lowrisc:prim:ram_2p:0
INFO: Preparing lowrisc:prim:rom:0
INFO: Preparing lowrisc:prim:usb_diff_rx:0
INFO: Preparing lowrisc:prim:xnor2:0
INFO: Preparing lowrisc:prim:xor2:0
INFO: Preparing lowrisc:ibex:ibex_core:0.1
INFO: Preparing lowrisc:prim:blanker:0
INFO: Preparing lowrisc:prim:clock_div:0
INFO: Preparing lowrisc:prim:double_lfsr:0
INFO: Preparing lowrisc:prim:flash:0
INFO: Preparing lowrisc:prim:flop_2sync:0
INFO: Preparing lowrisc:prim:mubi:0.1
INFO: Preparing lowrisc:prim:otp:0
INFO: Preparing lowrisc:prim:ram_1p_adv:0.1
INFO: Preparing lowrisc:prim:ram_2p_async_adv:0.1
INFO: Preparing lowrisc:prim:reg_we_check:0
INFO: Preparing lowrisc:prim:rom_adv:0.1
INFO: Preparing lowrisc:ip:rom_ctrl_pkg:0.1
INFO: Preparing lowrisc:prim:diff_decode:0
INFO: Preparing lowrisc:prim:edge_detector:0.1
INFO: Preparing lowrisc:prim:fifo:0
INFO: Preparing lowrisc:prim:ram_1p_scr:0.1
INFO: Preparing lowrisc:prim:ram_2p_adv:0.1
INFO: Preparing lowrisc:prim:rst_sync:0
INFO: Preparing lowrisc:tlul:headers:0.1
INFO: Preparing lowrisc:ibex:ibex_top:0.1
INFO: Preparing lowrisc:ip:lc_ctrl_pkg:0.1
INFO: Preparing lowrisc:prim:esc:0
INFO: Preparing lowrisc:systems:pinmux_reg:0.1
INFO: Preparing lowrisc:systems:pwrmgr_reg:0.1
INFO: Preparing lowrisc:systems:rstmgr_reg:0.1
INFO: Preparing lowrisc:tlul:trans_intg:0.1
INFO: Preparing lowrisc:ip:csrng_pkg:0.1
INFO: Preparing lowrisc:ip:otp_ctrl_pkg:1.0
INFO: Preparing lowrisc:ip:pinmux_reg:0.1
INFO: Preparing lowrisc:ip:pwrmgr_reg:0.1
INFO: Preparing lowrisc:ip:rstmgr_reg:0.1
INFO: Preparing lowrisc:prim:alert:0
INFO: Preparing lowrisc:prim:lc_dec:0.1
INFO: Preparing lowrisc:prim:lc_sender:0.1
INFO: Preparing lowrisc:prim:lc_sync:0.1
INFO: Preparing lowrisc:systems:ast_pkg:0
INFO: Preparing lowrisc:tlul:common:0.1
INFO: Preparing lowrisc:ip:edn_pkg:0.1
INFO: Preparing lowrisc:ip:otbn_pkg:0.1
INFO: Preparing lowrisc:ip:pwrmgr_pkg:0.1
INFO: Preparing lowrisc:ip:rv_plic_component:0.1
INFO: Preparing lowrisc:ip:sram_ctrl_pkg:0.1
INFO: Preparing lowrisc:prim:all:0.1
INFO: Preparing lowrisc:tlul:adapter_reg:0.1
INFO: Preparing lowrisc:tlul:adapter_sram:0.1
INFO: Preparing lowrisc:tlul:lc_gate:0.1
INFO: Preparing lowrisc:tlul:socket_1n:0.1
INFO: Preparing lowrisc:tlul:socket_m1:0.1
INFO: Preparing lowrisc:tlul:sram2tlul:0.1
INFO: Preparing lowrisc:ip:keymgr_pkg:0.1
INFO: Preparing lowrisc:ip:tlul:0.1
INFO: Preparing lowrisc:ip:usb_fs_nb_pe:0.1
INFO: Preparing lowrisc:prim:edn_req:0.1
INFO: Preparing lowrisc:prim:measure:0
INFO: Preparing lowrisc:systems:clkmgr_pkg:0.1
INFO: Preparing lowrisc:systems:flash_ctrl_pkg:0.1
INFO: Preparing lowrisc:tlul:adapter_host:0.1
INFO: Preparing pulp-platform:riscv-dbg:0.1:0
INFO: Preparing lowrisc:ip:adc_ctrl:1.0
INFO: Preparing lowrisc:ip:aes:1.0
INFO: Preparing lowrisc:ip:aon_timer:0.1
INFO: Preparing lowrisc:ip:clkmgr_components:0.1
INFO: Preparing lowrisc:ip:edn:0.1
INFO: Preparing lowrisc:ip:flash_ctrl_pkg:0.1
INFO: Preparing lowrisc:ip:gpio:0.1
INFO: Preparing lowrisc:ip:hmac:0.1
INFO: Preparing lowrisc:ip:i2c:0.1
INFO: Preparing lowrisc:ip:otbn:0.1
INFO: Preparing lowrisc:ip:otp_ctrl:1.0
INFO: Preparing lowrisc:ip:pattgen:0.1
INFO: Preparing lowrisc:ip:pwm:0.1
INFO: Preparing lowrisc:ip:rv_dm:0.1
INFO: Preparing lowrisc:ip:rv_timer:0.1
INFO: Preparing lowrisc:ip:sha3:0.1
INFO: Preparing lowrisc:ip:spi_device:0.1
INFO: Preparing lowrisc:ip:spi_host:1.0
INFO: Preparing lowrisc:ip:sram_ctrl:0.1
INFO: Preparing lowrisc:ip:sysrst_ctrl:1.0
INFO: Preparing lowrisc:ip:uart:0.1
INFO: Preparing lowrisc:ip:usbdev:0.1
INFO: Preparing lowrisc:opentitan:top_earlgrey_alert_handler_reg:0.1
INFO: Preparing lowrisc:opentitan:top_earlgrey_rv_plic:0
INFO: Preparing lowrisc:systems:sensor_ctrl_reg:0.1
INFO: Preparing lowrisc:top_earlgrey:xbar_main:0.1
INFO: Preparing lowrisc:top_earlgrey:xbar_peri:0.1
INFO: Preparing lowrisc:ip:alert_handler_component:0.1
INFO: Preparing lowrisc:ip:csrng:0.1
INFO: Preparing lowrisc:ip:entropy_src:0.1
INFO: Preparing lowrisc:ip:kmac_pkg:0.1
INFO: Preparing lowrisc:ip:pinmux_component:0.1
INFO: Preparing lowrisc:ip:pwrmgr:0.1
INFO: Preparing lowrisc:ip:rv_core_ibex:0.1
INFO: Preparing lowrisc:systems:clkmgr:0.1
INFO: Preparing lowrisc:systems:flash_ctrl:0.1
INFO: Preparing lowrisc:systems:sensor_ctrl_pkg:0.1
INFO: Preparing lowrisc:ip:flash_ctrl:0.1
INFO: Preparing lowrisc:ip:keymgr:0.1
INFO: Preparing lowrisc:ip:kmac:0.1
INFO: Preparing lowrisc:ip:lc_ctrl:0.1
INFO: Preparing lowrisc:ip:pinmux:0.1
INFO: Preparing lowrisc:ip:rom_ctrl:0.1
INFO: Preparing lowrisc:opentitan:top_earlgrey_alert_handler:0.1
INFO: Preparing lowrisc:systems:rstmgr_pkg:0.1
INFO: Preparing lowrisc:systems:sensor_ctrl:0.1
INFO: Preparing lowrisc:ip:rstmgr_pkg:0.1
INFO: Preparing lowrisc:systems:rstmgr:0.1
INFO: Preparing lowrisc:ip:rstmgr_cnsty_chk:0
INFO: Preparing lowrisc:ip:rstmgr:0.1
INFO: Preparing lowrisc:systems:top_earlgrey:0.1
Traceback (most recent call last):
  File "/home/guozhiyang/.local/bin/fusesoc", line 8, in <module>
    sys.exit(main())
  File "/home/guozhiyang/.local/lib/python3.8/site-packages/fusesoc/main.py", line 777, in main
    fusesoc(args)
  File "/home/guozhiyang/.local/lib/python3.8/site-packages/fusesoc/main.py", line 767, in fusesoc
    args.func(cm, args)
  File "/home/guozhiyang/.local/lib/python3.8/site-packages/fusesoc/main.py", line 327, in run
    run_backend(
  File "/home/guozhiyang/.local/lib/python3.8/site-packages/fusesoc/main.py", line 419, in run_backend
    edam = edalizer.run()
  File "/home/guozhiyang/.local/lib/python3.8/site-packages/fusesoc/edalizer.py", line 84, in run
    self.run_generators()
  File "/home/guozhiyang/.local/lib/python3.8/site-packages/fusesoc/edalizer.py", line 181, in run_generators
    core_list=self._core_list_for_generator(),
  File "/home/guozhiyang/.local/lib/python3.8/site-packages/fusesoc/edalizer.py", line 162, in _core_list_for_generator
    "files": [str(f["name"]) for f in core.get_files(core_flags)],
  File "/home/guozhiyang/.local/lib/python3.8/site-packages/fusesoc/capi2/core.py", line 370, in get_files
    pf = f.name.parse(flags)
  File "/home/guozhiyang/.local/lib/python3.8/site-packages/fusesoc/capi2/core.py", line 63, in parse
    self.exprs = Exprs(str(self))
  File "/home/guozhiyang/.local/lib/python3.8/site-packages/fusesoc/capi2/exprs.py", line 154, in __init__
    self.ast = _parse(string)
  File "/home/guozhiyang/.local/lib/python3.8/site-packages/fusesoc/capi2/exprs.py", line 143, in _parse
    raise ValueError(
ValueError: Invalid syntax for string: Expected {{{['!'] W:(+-:<->A-[]-_a-z~) Suppress:('?') Suppress:('(') Group:(: ...)} Suppress:(')')} ^ W:(+-:<->A-[]-_a-z~)}, found '$'  (at char 0), (line:1, col:1). Parsed text was '$YOSYS_DAT_DIR/ice40/cells_sim.v'.
make: *** [/home/guozhiyang/work/opentitan/hw/syn/tools/dvsim/syn.mk:17: gen_sv_flist] Error 1

I saw the issue #16295 and tried the fixes proposed in #16501 , but it's not work for me.

sriyerg commented 1 year ago

The dc is unsupported for job runtime extraction is a benign warning that can be ignored. The real issue appears to be elsewhere. Perhaps there is a syntax error in one of your fusesoc core files?

Please see these warnings:

WARNING: Parse error. Ignoring file /home/guozhiyang/work/opentitan/bazel-opentitan/fusesoc/tests/capi2_cores/misc/empty.core: Missing 'name' parameter
WARNING: Parse error. Ignoring file /home/guozhiyang/work/opentitan/fusesoc/tests/capi2_cores/misc/empty.core: Missing 'name' parameter

And this error:

ValueError: Invalid syntax for string: Expected {{{['!'] W:(+-:<->A-[]-_a-z~) Suppress:('?') Suppress:('(') Group:(: ...)} Suppress:(')')} ^ W:(+-:<->A-[]-_a-z~)}, found '$'  (at char 0), (line:1, col:1). Parsed text was '$YOSYS_DAT_DIR/ice40/cells_sim.v'.