硬件c model

c model的问题。 输入输出接口要和rtl严格一致, 接口信号可以打印到文件方便模块级别定位调试。保证重构的c model和rtl bit 级对应。 那么什么样的c model是一个便于硬件的c model?

C model 比较适合数据流处理。控制流可以用软件状态机处理,或者用软件方法进行同步(也可以采用systemC方案)
比如:对应硬件结构,有mem模块,interface,寄存器,组合逻辑,fifo。
那么如何用c去处理这些结构比较好呢?(ASIC Design and C Model - 知乎 (zhihu.com))

  1. C model 使用单线程 do loop方式实现(多模块例化用for循环串行)。
  2. C model 软硬件分割接口清晰, 参数信息可以通过file输入, 接口file寄存器输出。
  3. 模块接口按照硬件接口设计来实现。模块层次和rtl一一对应。(数据流)
  4. 一些控制逻辑可以在c中用软状态机实现。
  5. axi部分和ddr交互的部分,绝对地址分配ddr空间和内部状态寄存器。
  6. mem用全局数组放在外部定义。用external在不同模块声明。 命名的时候可以用globle和子模块头来区分。这样和rtl对应关系比较好。数据传递时候还要通过模块端口。
  7. Firmware 部分通过宏或者函数标记,fpga 移植方便。
  8. 每个模块需要提供初始化和独立运行函数。default数据可以从大cmodel提取。
  9. 所有interface可以打印输出。单独load数据。
  10. 保证cmodel编码结果和rtl编码结果,中间结果一一对应。 解码结果和重建帧一一对应。
  11. interface:用指针传,可以命名时候带下标表明输入输出。可以用struct打包。
  12. 寄存器:内部寄存器可以忽略, 接口寄存器用局部数组存。
  13. 组合逻辑: 纯软件逻辑计算
  14. fifo: 为了保证硬件结构一致性,可以用软件包个透传空函数(或者宏定义)。或者数组存。

你可能感兴趣的:(verilog,hevc,音频编码解码,架构师,soc)