Opentitan硬件设计说明

Opentitan硬件设计说明

本文档旨在说明如何在 OpenTitan 项目中开始硬件设计。 这里所说的设计一般是指一种新的可移植外设,但可以包括高层次的架构设计,如设备的复位策略等。这部分主要是为了从头开始创建新设计的说明,但也有关于如何为现有设计做出改进的说明。 它针对 RTL 设计人员,以明确声明功能、寻找其他人进行审核等的典型流程。我们的目标是在增加清晰度和不过度规定规则和流程之间取得合理的平衡。 有时需要采取更有条理的方法,这些将在本文档中着重强调。 欢迎反馈和提出改进意见!

设计的阶段

Opentitan的硬件设计的生命周期在硬件开发阶段文档中有所说明。硬件设计被分为三大阶段:规范(Specification)、开发(Development)和签核(Signed-off)。 本文档试图就如何开始第一阶段并顺利过渡到开发阶段提供指导。 需要说明的是,这不是硬性规定,而是我们在opentitan项目中所使用的方法。

概念和RFC

设计的概念可能来自各种方面:

  1. 根据未来产品需求所要设计的模块;
  2. 扩展产品功能所需的新设计;
  3. 值得引发广泛讨论的设计思路;
  4. 甚至可能是现有设计的新方法(更高的性能;更安全等)。

无论是哪个方面的激励,这个概念都应该被写成一个具有基本特征的简短提案。 这与对现有设计的微小修改建议不同,后者可以作为与现有设计关联的 GitHub 拉取请求或问题文件进行处理。 此提案应采用 Google Doc 媒介,以实现快速的审核。 理想情况下,系统会在团队云端硬盘中创建此提案文档,但如果作者无权访问团队云端硬盘,他们可以共享私下创建的文档。

我们建议设计方案应遵循RFC(Request for Comment, 征求意见)流程,该流程会处理所有的此类提案。 如果 RFC 可能包含可能与认证相关的信息(要共享的指南),请先向 security@opentitan.org 发送注释以获取反馈。 OpenTitan技术委员会也许能够建议其他合作者来帮助初期的审查。

我们将提供一个规范的 RFC 的示例 (TODO)。

详细规范

简短的设计提案一旦通过了对功能集和高级描述的初步审查,以及潜在的安全审查,设计者就需要提供Google Doc形式的完整的详细规范。 内容、形式和格式已在设计方法文档方法指南中说明。 最终所呈现的结果应是一个可供其他项目成员进一步详细审查的设计规范。 设计规范的内容和状态可以与团队共享。

规范详细规范的一个示例是 pinmux 规范,该规范可以在 TeamDrive 的TechnicalSpecifications –> deprecated目录下找到。 (在GitHub上转换为Markdown的Google Docs存档在这里)。

请注意,在开发 OpenTitan 安全 IP 时,设计人员应遵循安全硬件设计指南

初始架构

在发布和审查设计规范的同时,可以开始初始架构设计。 有很多方法可以避免在实施过程中的“大爆炸”,并帮助设计者通过最终的代码审查。 一种推荐的方法如下:

  • 从包含 Hjson 格式寄存器内容的完整或接近完整定义的框架开始
  • 与包含该文件的基本的Markdown相结合
  • 结合对自动生成的寄存器模型实例化的 IP 顶级 Verilog 模块(请参阅寄存器工具文档),包括所有已知的 IP 级 IO、时钟和复位。
    以上这些不是强制性的,但达到了通过首次审查的基本条件,以及随着时间的推移的完整自定义详细信息。 不管是否是第一次提交设计,当然应该是可编译的,语法正确的,遵守编码风格指南,可移植性等效等,如设计方法用户指南所示。

初始架构设计的一个很好的例子可以在 AES 模块的116号合并请求中看到。

作为GitHub提交过程的一部分,Google Doc规范必须转换为Markdown规范。 (提示:有一些Google Doc插件可以将规范转换为Markdown格式)。 完成此操作后,团队云端硬盘上的所有规范都应移至云端硬盘的已弃用部分,顶部会显示一个链接,表明该文档仅用于历史目的。 这仅适用于源自驱动器的规格。

完整设计

一旦 IP 块准备就绪,就可以将其包含在顶层设计中。 为此,请按照以下步骤操作:

  • 就是否以及如何集成 IP 块达成一致。
  • 确保 IP 块的质量可接受。
  • 确保顶级模拟不会受到负面影响。
  • 打开包含必要代码更改的合并请求。

如果不清楚如何继续,请随时提交问题以寻求帮助。

中断更改

除了 RTL 更改之外,更改 IP 块的中断还需要一些额外的工作。

  • 如果存在 DV 环境,则其测试平台要有可以连接tb.sv的端口。
  • 如果 IP 块已在顶层中实例化,则需要重新生成该顶曾以包含新的端口。
  • 自动生成的 DIF 需要重新生成。
  • PLIC测试也应该更新。

第 1 项无需赘述, 下面展示了如何执行第 2-4 项。

更新顶层

$ make -C hw top

在你修改完IP,IP顶层模块,IP寄存器接口以及DV测试平台之后,你可以利用上面的命令重新生成顶层。 这将读取文件并更新中断信号,并在需要.hjsontb, .sv 和.hjson时重新生成PLIC模块。

新的DIF

需要注意的是,重新生成TOP并不能解决所有问题。 如果更改了中断名称或引入了新的中断,则应重新生成 IP 块的 DIF。

$ ./util/make_new_dif.py --mode=regen --only=autogen

上面的命令会在 .sw/device/lib/dif/ 目录下更新DIF自动生成的部分。

如果 IP 块的 DIF 已经使用了内部的中断枚举,则需要手动修改引用。在大多数情况下,中断名称后接 PascalCase(e.g) 中的 IP 名称,然后是 PascalCase(e.g) 中的中断名称。 例如, 要引用顶层 PLIC 枚举中的中断,格式为 :后跟 PascalCase 中的 IP 名称,然后是 PascalCase 中的中断名称。 比如:

.kDifSpiDeviceIrqRxFullkDifSpiDeviceIrqRxFullkTopEarlgreyPlicIrqIdkTopEarlgreyPlicIrqIdSpiDeviceRxFull

PLIC测试

如果中断次数已更改,则需要手动修改软件单元测试。

打开宏并将其更改为当前中断编号。 然后,找到并修改 Bit 值或添加下面的内容(如果添加了新的寄存器)。

.sw/device/lib/dif/dif_rv_plic_unittest.ccRV_PLIC_PARAM_NUM_SRCRV_PLIC_IE0_REG_OFFSETRV_PLIC_IP0_REG_OFFSETIEIP

ps:本篇为 google 开源项目 opentitan 的硬件设计说明的大致翻译,笔者水平有限,仅供参考。

<think>好的,我现在需要帮用户推荐前端设计的在线课程。首先,用户之前已经询问过数字IC设计课程,现在具体到前端设计,可能需要更专业的建议。先回顾之前的回答,我之前分了几类:高校课程、在线平台、培训机构、自学资源。现在用户聚焦前端设计,所以可能需要详细列出这方面的资源。 用户可能的目标是就业或者转行,因为前端设计在IC行业中需求较大,尤其是RTL设计、验证等岗位。需要推荐理论与实践结合的课程,可能包含工具使用、项目经验等内容。还要考虑用户的学习方式,比如在线平台灵活性高,适合在职或自学的人。 首先,我得区分不同平台的特点。比如Coursera的课程可能更理论,适合打基础;而像E课网这样的国内平台可能更贴近实际项目,适合求职。另外,验证部分也很重要,比如UVM方法学,路科验证可能专门做这个。需要确保推荐的课程涵盖前端设计的关键技能:RTL编码(Verilog/VHDL)、验证(SystemVerilog/UVM)、EDA工具使用(VCS、Verdi)、低功耗设计等。 还要注意用户的背景,是否有相关基础。比如夏宇闻的Verilog书籍适合入门,而Coursera的课程可能需要一定的数电基础。同时,开源项目如RISC-V核可以帮助实践,但可能需要指导。 另外,用户可能关心证书和就业支持,所以像E课网、路科验证这些提供项目案例和内推资源的机构会更合适。还要提醒避坑,比如避免那些承诺包就业但资源不足的机构。 最后,需要结构清晰,分点列出课程名称、优势、适合人群等,方便用户比较选择。可能还需要加入自学资源,比如书籍和开源工具,供预算有限的用户参考。确保信息准确,比如检查课程是否仍然可用,平台是否有更新。总结时给出选择建议,帮助用户根据自身情况决定。</think>以下是针对数字IC前端设计的在线课程推荐及分析,涵盖 **理论强化、工具实操、项目实战** 等方向,结合学习成本与就业需求分类整理: --- ### **一、综合类平台(系统化学习)** 1. **Coursera《Digital Systems: From Logic Gates to Processors》**(巴塞罗那自治大学) - **核心内容**:从布尔代数到简单CPU设计,使用Verilog实现有限状态机、ALU等模块。 - **优势**:免费旁听,附带Quartus Prime实验指导。 - **适合人群**:零基础入门,需补足数电基础者。 2. **Udemy《Complete Verilog HDL Programming》** - **亮点**:通过FIFO、SPI控制器等案例,详解Verilog语法及仿真技巧(配合ModelSim)。 - **实践资源**:提供可下载的Testbench模板及调试指南。 --- ### **二、国内就业导向课程(含企业级项目)** 1. **E课网《数字IC前端设计实战班》** - **课程结构**: - 阶段1:RTL设计(UART、I2C、AHB-SRAM控制器) - 阶段2:UVM验证(搭建验证平台,覆盖率驱动测试) - 阶段3:低功耗设计(UPF流程,Clock Gating实现) - **工具链**:Synopsys VCS/Verdi、Cadence Xcelium - **附加服务**:简历优化+模拟面试,合作企业包括海思、紫光展锐等。 2. **路科验证《SystemVerilog与UVM验证实战》** - **特色**:聚焦验证技术,涵盖APB/UART/AXI4验证项目,提供在线EDA实验环境。 - **学习周期**:3个月(每周10小时),适合转行验证工程师。 --- ### **三、专项技能提升(高阶内容)** 1. **Coursera《Hardware Security》**(马里兰大学) - **独特价值**:讲解硬件木马检测、侧信道攻击防护,培养安全敏感型设计思维。 - **适合人群**:已有前端基础,目标安全芯片设计岗位。 2. **移知教育《高级时序约束与STA》** - **核心内容**:SDC约束编写、多周期路径分析、时序例外处理。 - **工具实操**:PrimeTime静态时序分析案例(含跨时钟域收敛技巧)。 --- ### **四、低成本自学路径(开源资源+社区)** 1. **书籍+工具组合** - **必读书籍**: - 《数字集成电路设计透视》(David Harris)——RTL优化方法论 - 《UVM实战》(张强)——手把手构建验证环境 - **工具链**: - Icarus Verilog(仿真)+ GTKWave(波形查看) - 开源EDA:OpenROAD(自动布局布线) 2. **GitHub实战项目推荐** - **RISC-V核设计**:PicoRV32(轻量级CPU,代码简洁易学) - **开源SoC**:OpenTitan(Google支持,含完整验证框架) --- ### **五、选择建议** 1. **根据基础选择** - **零基础**:从Coursera/《Verilog数字系统设计教程》起步,配合Icarus Verilog仿真。 - **有基础**:直接学习E课网/路科验证的实战项目,重点突破代码风格与验证方法学。 2. **工具熟练度优先级** - 企业招聘核心要求:VCS仿真调试、Verdi波形分析、覆盖率收敛流程。优先选择提供**企业EDA许可证**的课程。 3. **项目经验积累策略** - 自主扩展课程案例:例如将UART控制器升级为DMA控制,或为RISC-V核添加自定义指令。 - 参与开源社区:如CHIPS Alliance,贡献代码可获得行业背书。 --- ### **六、避坑指南** - 慎选“纯理论无代码”课程:前端设计需大量手写RTL/Testbench,仅PPT讲解无效。 - 确认EDA工具版本:部分课程使用过时版本(如VCS-2014),与当前企业环境脱节。 - 优先选择提供**设计规则检查(DRC/Lint)**教学的课程,避免写出不可综合的代码。 如需具体课程链接或企业内推渠道信息,可进一步说明需求方向(如验证/综合/低功耗)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ank3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值