hi I run all the scripts defined in static timing ...
# timing-closure
b
hi I run all the scripts defined in static timing analysis and got no error, after running final make caravel-sta I got these at the console: Found 78682 unannotated nets. Found 724 partially unannotated nets. you may want to edit sdc: /home/mbaykenar/Desktop/workspace/mpw7_yonga_soc/caravel/signoff/caravel/caravel.sdc to change i/o constraints check /home/mbaykenar/Desktop/workspace/mpw7_yonga_soc/signoff/caravel/openlane-signoff/timing/max/s logged to /home/mbaykenar/Desktop/workspace/mpw7_yonga_soc/logs/top/caravel-timing-s-max.log make[1]: Leaving directory '/home/mbaykenar/Desktop/workspace/mpw7_yonga_soc/deps/timing-scripts' You can find results for all corners in /home/mbaykenar/Desktop/workspace/mpw7_yonga_soc/signoff/caravel/openlane-signoff/timing/ so did I pass or fail :l
d
You need to manually review the report in signoff/caravel/openlane-signoff/timing/ to see any VIOLATION
m
how do you know that Dinesh? Is there more documentation somewhere?
d
Script will writing out all the timing report under <signoff/caravel/openlane-signoff/timing/> with min/max/nom corner, You need to manually review any VIOLATING Paths.
Copy code
dinesha@lenovo-i3-10100-07IMB05:~/workarea/opencore/git/riscduino/signoff/caravel/openlane-signoff/timing$ ls  */*
max/f-clk-max.rpt            max/s-soc-min.rpt            min/f-mprj-min.rpt           min/t-min.rpt                nom/s-hkspi_clk-min.rpt
max/f-clk-min.rpt            max/s-unannotated.log        min/f-soc-max.rpt            min/t-mprj-max.rpt           nom/s-max.rpt
max/f-hk_serial_clk-max.rpt  max/t-clk-max.rpt            min/f-soc-min.rpt            min/t-mprj-min.rpt           nom/s-min.rpt
max/f-hk_serial_clk-min.rpt  max/t-clk-min.rpt            min/f-unannotated.log        min/t-soc-max.rpt            nom/s-mprj-max.rpt
max/f-hkspi_clk-max.rpt      max/t-hk_serial_clk-max.rpt  min/s-clk-max.rpt            min/t-soc-min.rpt            nom/s-mprj-min.rpt
max/f-hkspi_clk-min.rpt      max/t-hk_serial_clk-min.rpt  min/s-clk-min.rpt            min/t-unannotated.log        nom/s-soc-max.rpt
max/f-max.rpt                max/t-hkspi_clk-max.rpt      min/s-hk_serial_clk-max.rpt  nom/f-clk-max.rpt            nom/s-soc-min.rpt
max/f-min.rpt                max/t-hkspi_clk-min.rpt      min/s-hk_serial_clk-min.rpt  nom/f-clk-min.rpt            nom/s-unannotated.log
max/f-mprj-max.rpt           max/t-max.rpt                min/s-hkspi_clk-max.rpt      nom/f-hk_serial_clk-max.rpt  nom/t-clk-max.rpt
max/f-mprj-min.rpt           max/t-min.rpt                min/s-hkspi_clk-min.rpt      nom/f-hk_serial_clk-min.rpt  nom/t-clk-min.rpt
max/f-soc-max.rpt            max/t-mprj-max.rpt           min/s-max.rpt                nom/f-hkspi_clk-max.rpt      nom/t-hk_serial_clk-max.rpt
max/f-soc-min.rpt            max/t-mprj-min.rpt           min/s-min.rpt                nom/f-hkspi_clk-min.rpt      nom/t-hk_serial_clk-min.rpt
max/f-unannotated.log        max/t-soc-max.rpt            min/s-mprj-max.rpt           nom/f-max.rpt                nom/t-hkspi_clk-max.rpt
max/s-clk-max.rpt            max/t-soc-min.rpt            min/s-mprj-min.rpt           nom/f-min.rpt                nom/t-hkspi_clk-min.rpt
max/s-clk-min.rpt            max/t-unannotated.log        min/s-soc-max.rpt            nom/f-mprj-max.rpt           nom/t-max.rpt
max/s-hk_serial_clk-max.rpt  min/f-clk-max.rpt            min/s-soc-min.rpt            nom/f-mprj-min.rpt           nom/t-min.rpt
max/s-hk_serial_clk-min.rpt  min/f-clk-min.rpt            min/s-unannotated.log        nom/f-soc-max.rpt            nom/t-mprj-max.rpt
max/s-hkspi_clk-max.rpt      min/f-hk_serial_clk-max.rpt  min/t-clk-max.rpt            nom/f-soc-min.rpt            nom/t-mprj-min.rpt
max/s-hkspi_clk-min.rpt      min/f-hk_serial_clk-min.rpt  min/t-clk-min.rpt            nom/f-unannotated.log        nom/t-soc-max.rpt
max/s-max.rpt                min/f-hkspi_clk-max.rpt      min/t-hk_serial_clk-max.rpt  nom/s-clk-max.rpt            nom/t-soc-min.rpt
max/s-min.rpt                min/f-hkspi_clk-min.rpt      min/t-hk_serial_clk-min.rpt  nom/s-clk-min.rpt            nom/t-unannotated.log
max/s-mprj-max.rpt           min/f-max.rpt                min/t-hkspi_clk-max.rpt      nom/s-hk_serial_clk-max.rpt
max/s-mprj-min.rpt           min/f-min.rpt                min/t-hkspi_clk-min.rpt      nom/s-hk_serial_clk-min.rpt
max/s-soc-max.rpt            min/f-mprj-max.rpt           min/t-max.rpt                nom/s-hkspi_clk-max.rpt
Based on Your design may need to update caravel.sdc also - As current SDC is for Caravel + example user project
You should also check *unannotated.log file to see any valid FF is not getting clock or not
b
@Dinesh A thanks a lot, I will
in the meantime, I also push efabless new repo and rerun pre-check and see if any error comes out
I did run *grep -r -c "VIOLAT*"* in signoff/caravel/openlane-signoff/timing the results are not so heartwarming 😅 max/t-mprj-min.rpt:761 max/t-max.rpt:217 _*max/f-hk_serial_clk-max.rpt:0*_ _*max/t-hkspi_clk-min.rpt:0*_ max/f-unannotated.log:0 max/f-clk-max.rpt:0 max/t-soc-max.rpt:217 max/s-unannotated.log:0 _*max/s-hk_serial_clk-max.rpt:0*_ _*max/f-hkspi_clk-max.rpt:0*_ max/f-mprj-max.rpt:0 _*max/f-hk_serial_clk-min.rpt:0*_ max/s-soc-min.rpt:748 max/s-max.rpt:13627 max/t-unannotated.log:0 max/t-clk-min.rpt:1000 max/s-soc-max.rpt:1004 _*max/t-hkspi_clk-max.rpt:0*_ max/s-mprj-min.rpt:789 _*max/s-hkspi_clk-min.rpt:0*_ max/s-mprj-max.rpt:1000 max/t-min.rpt:15636 max/f-soc-max.rpt:0 max/f-max.rpt:0 max/s-clk-min.rpt:1000 max/s-clk-max.rpt:1000 max/f-soc-min.rpt:711 max/f-mprj-min.rpt:752 _*max/s-hk_serial_clk-min.rpt:0*_ max/t-clk-max.rpt:0 _*max/f-hkspi_clk-min.rpt:0*_ _*max/t-hk_serial_clk-max.rpt:0*_ max/t-soc-min.rpt:720 _*max/t-hk_serial_clk-min.rpt:0*_ max/t-mprj-max.rpt:217 _*max/s-hkspi_clk-max.rpt:0*_ max/f-min.rpt:15600 max/f-clk-min.rpt:1000 max/s-min.rpt:15787 nom/t-mprj-min.rpt:771 nom/t-max.rpt:197 _*nom/f-hk_serial_clk-max.rpt:0*_ _*nom/t-hkspi_clk-min.rpt:0*_ nom/f-unannotated.log:0 nom/f-clk-max.rpt:0 nom/t-soc-max.rpt:197 nom/s-unannotated.log:0 _*nom/s-hk_serial_clk-max.rpt:0*_ _*nom/f-hkspi_clk-max.rpt:0*_ nom/f-mprj-max.rpt:0 _*nom/f-hk_serial_clk-min.rpt:0*_ nom/s-soc-min.rpt:759 nom/s-max.rpt:13182 nom/t-unannotated.log:0 nom/t-clk-min.rpt:1000 nom/s-soc-max.rpt:1004 _*nom/t-hkspi_clk-max.rpt:0*_ nom/s-mprj-min.rpt:800 _*nom/s-hkspi_clk-min.rpt:0*_ nom/s-mprj-max.rpt:1000 nom/t-min.rpt:15709 nom/f-soc-max.rpt:0 nom/f-max.rpt:0 nom/s-clk-min.rpt:1000 nom/s-clk-max.rpt:1000 nom/f-soc-min.rpt:721 nom/f-mprj-min.rpt:762 _*nom/s-hk_serial_clk-min.rpt:0*_ nom/t-clk-max.rpt:0 _*nom/f-hkspi_clk-min.rpt:0*_ _*nom/t-hk_serial_clk-max.rpt:0*_ nom/t-soc-min.rpt:730 _*nom/t-hk_serial_clk-min.rpt:0*_ nom/t-mprj-max.rpt:197 _*nom/s-hkspi_clk-max.rpt:0*_ nom/f-min.rpt:15704 nom/f-clk-min.rpt:1000 nom/s-min.rpt:15862 min/t-mprj-min.rpt:795 min/t-max.rpt:166 _*min/f-hk_serial_clk-max.rpt:0*_ _*min/t-hkspi_clk-min.rpt:0*_ min/f-unannotated.log:0 min/f-clk-max.rpt:0 min/t-soc-max.rpt:166 min/s-unannotated.log:0 _*min/s-hk_serial_clk-max.rpt:0*_ _*min/f-hkspi_clk-max.rpt:0*_ min/f-mprj-max.rpt:0 _*min/f-hk_serial_clk-min.rpt:0*_ min/s-soc-min.rpt:778 min/s-max.rpt:10381 min/t-unannotated.log:0 min/t-clk-min.rpt:1000 min/s-soc-max.rpt:1004 _*min/t-hkspi_clk-max.rpt:0*_ min/s-mprj-min.rpt:819 _*min/s-hkspi_clk-min.rpt:0*_ min/s-mprj-max.rpt:1000 min/t-min.rpt:15827 min/f-soc-max.rpt:0 min/f-max.rpt:0 min/s-clk-min.rpt:1000 min/s-clk-max.rpt:1000 min/f-soc-min.rpt:738 min/f-mprj-min.rpt:779 _*min/s-hk_serial_clk-min.rpt:0*_ min/t-clk-max.rpt:0 _*min/f-hkspi_clk-min.rpt:0*_ _*min/t-hk_serial_clk-max.rpt:0*_ min/t-soc-min.rpt:754 _*min/t-hk_serial_clk-min.rpt:0*_ min/t-mprj-max.rpt:166 _*min/s-hkspi_clk-max.rpt:0*_ min/f-min.rpt:15798 min/f-clk-min.rpt:1000 min/s-min.rpt:15958
an example violation message is: min/s-min.rpt: -4.5165 slack (VIOLATED)
d
Yes, first priority is to check *min.rpt to check any hold violation in your design
If your block level partition are clean during openlane flow, then you should get only inter-block violation only. You need to cross-check if caravel.sdc need any update specific to your design. In the flow it gives warning saying SDC may need a update. Found 78682 unannotated nets. Found 724 partially unannotated nets. you may want to edit sdc: /home/mbaykenar/Desktop/workspace/mpw7_yonga_soc/caravel/signoff/caravel/caravel.sdc to change i/o constraints
b
yes thanks a lot, during macro hardening I don't get these violations but at the integration level I don't remember adding any extra constraint or editing anything
d
You need to cross-check the path to understand the issue, I see some of the MAX corner violation are related to Caravel SOC which can ignored.