FSIC ASIC Integration & Implementation Status - 20230918 # caravel-lab for fsic - after hack some design in AA, AS and testbench then fsic run openlane flow pass. - pass log - [run_fsic.log](https://github.com/TonyHo722/caravel-lab/blob/1b96607802059099ac4f781af9638077d97069a4/bash_auto/ubuntu5/run_fsic.log) ``` Successfully remade target file 'run-precheck'. ``` ## [build fsic in caravel-lab issue when no user_proj_example](https://hackmd.io/@TonyHo/HJoS_Nrk6) - pass ``` user_project_wrapper -> user_proj_example -> fsic ``` - fail ``` user_project_wrapper -> fsic ``` # latch issue ## in axis_switch - hurry fixed it by update code ## in axis_axil - TBD # ERROR: Multiple edge sensitive events found for this signal! ## in io_serdes [fixed run yosys issue - ERROR: Multiple edge sensitive events found for this signal!](https://hackmd.io/@TonyHo/rJLieq603) ## in axis_switch - hurry found solution ## in axis_axil - TBD # wait(uut.mprj.u_fsic.U_IO_SERDES0.rxen) issue in synthesys - I want to wait a internal signal of fsic in testbench, but synthesys will change the hierarchy - error in using (* keep_hierarchy = “yes” *) - I will try to use delay in testbench to replace wait. ## error in using (* keep_hierarchy = “yes” *) - [use "DONT TOUCH" issue in run_fsic](https://hackmd.io/@TonyHo/HJ685pQy6) - error message ``` [INFO]: Running Synthesis (log: ../SSD1T/debug/fsic_0913debug_fsic_onefile/caravel_user_project/openlane/user_proj_example/runs/23_09_17_11_05/logs/synthesis/1-synthesis.log)... [ERROR]: during executing yosys script /openlane/scripts/yosys/synth.tcl [ERROR]: Log: ../SSD1T/debug/fsic_0913debug_fsic_onefile/caravel_user_project/openlane/user_proj_example/runs/23_09_17_11_05/logs/synthesis/1-synthesis.log [ERROR]: Last 10 lines: Used module: \FSIC Used module: \FSIC_CLKRST Used module: \AXIS_SW Used module: \AXIL_AXIS Used module: \CFG_CTRL Parameter \BITS = 32 4.2. Executing AST frontend in derive mode using pre-parsed AST for module `\FSIC'. ERROR: Module `\MPRJ_IO' referenced in module `\FSIC' in cell `\U_MPRJ_IO0' is not part of the design. child process exited abnormally [ERROR]: Creating issue reproducible... ``` # Question ## How to set constrain in io_clk in config.json? [config.json](https://github.com/TonyHo722/caravel-lab/blob/1b96607802059099ac4f781af9638077d97069a4/custom_design/fsic/openlane/user_proj_example/config.json#L6C1-L7C34) ``` "DESIGN_NAME": "user_proj_example", "DESIGN_IS_CORE": 0, "VERILOG_FILES": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_proj_example.v" ], "CLOCK_PERIOD": 85, "CLOCK_PORT": "wb_clk_i", "CLOCK_NET": "u_fsic.wb_clk", "FP_SIZING": "absolute", ``` [user_proj_example.v](https://github.com/TonyHo722/caravel-lab/blob/1b96607802059099ac4f781af9638077d97069a4/custom_design/fsic/verify-fsic-rtl/user_proj_example.v) ``` module user_proj_example #( parameter BITS = 32 )( ... input wb_clk_i, ... // IOs input [`MPRJ_IO_PADS-1:0] io_in, output [`MPRJ_IO_PADS-1:0] io_out, output [`MPRJ_IO_PADS-1:0] io_oeb, ... ); ... FSIC #(.BITS( BITS )) u_fsic ( ... .wb_clk (wb_clk_i), // I ... // IO Pads .io_in (io_in), // I 38 .io_out (io_out), // O 38 .io_oeb (io_oeb), // O 38 ... ); endmodule ```