Verilog代码封装后门访问

描述

编 者 按   

    关于仿真里的后门访问,之前的文章《三分钟教会你SpinalHDL仿真中的后门读写》中有做过介绍,其针对的都是针对以SpinalHDL中的代码进行的后门访问。今天来看看当封装了Verilog BlackBox时,在SpinalHDL仿真中如何进行后门访问Verilog代码。

BlackBox代码封装    

 考虑下面的BlackBox代码封装:

代码

    这里我们封装了一个BlackBox A,在Demo中进行例化。如果我们在仿真时如果想要后门访问模块A中的sum,那么直接访问肯定是不行的,这里就需要对BlackBox A稍进行修改:

代码

    这里需要在A中例化一个sum变量并标注为simPublic,同时在RTL代码中就sum需添加/* verilator public */(注意是添加在分号前)。这样我们可以在仿真中访问A中的sum:

代码

    仿真中可以正常访问A中的sum:

[Progress] Verilator compilation done in 4112.984 ms

[Progress] Start Demo test simulation with seed 129114326

data_out=4AInst.sum=5

多层blackbox     

考虑下面的BlackBox:

代码

    在BlackBox A中其封装的模块A中有例化了模块B,如果我们想要访问模块B中的sum,那么除了要在sum行添加/* verilator public */外还需要对BlackBox A添加待访问sum的层次结构:

代码

    在仿真时可以访问B_Inst中的sum变量:

代码

[Progress] Start Demo test simulation with seed 574035638

data_out=4AInst.B_Inst.sum=5

[Done] Simulation done in 5.223 ms

写在最后     

这里的仿真均采用的是Verilator,关于VCS小伙伴们可以自行探索。  

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分