https://mp.weixin.qq.com/s/PQIPkDymvcGc_re8ux50vA

 
结构体可以嵌套使用。
 
参考链接
 
1.创建And2And.java, 并生成构造方法和logic()方法
 
2. 根据逻辑原理,添加输入输出接口
jchdl - RTL实例 - And2And(结构体嵌套的使用)-LMLPHP
输入输出线作为类成员存在。使用注解标明是input port还是output port。
 
这里的Abcd类型,是一个嵌套的结构体类型,里面嵌套包含了Abc结构体类型:
jchdl - RTL实例 - And2And(结构体嵌套的使用)-LMLPHP
 
除了abcd输入接口外,模块内部还包含了Abcd类型的结构体变量e。
 
3. 在构造方法中搜集输入输出线并调用construct()方法
jchdl - RTL实例 - And2And(结构体嵌套的使用)-LMLPHP
首先调用父类即Module类的构造方法,以构建模块hierarchy。
然后逐个把输入输出参数与input/output port对应上。
然后调用construct()方法构造模块(调用一次logic()方法,搜集模块的assign/always代码块、子模块)。
 
4. 在logic()方法中创建assign/always代码块,以及子模块
jchdl - RTL实例 - And2And(结构体嵌套的使用)-LMLPHP
这里包含两个子模块:And2和And,直接把abcd下的子成员abc传给And2;
 
5. 创建inst静态方法方便后续使用
 
6. 创建main方法执行验证
jchdl - RTL实例 - And2And(结构体嵌套的使用)-LMLPHP
运行结果为:
 
7. 生成Verilog
生成定制化模块名:
 
调用toVerilog()方法生成Verilog实现。
 
执行结果如下:
jchdl - RTL实例 - And2And(结构体嵌套的使用)-LMLPHP
 
jchdl - RTL实例 - And2And(结构体嵌套的使用)-LMLPHP
05-26 22:20