RISC-V SoC设计—SRAM定制

超低功耗、小面积RISC-V CPU需要ILM SRAM、DLM SRAM。

本SoC设计指标:

ILM SRAM:64KB,LD/ST指令可访问,即可作为data sram。

DLM SRAM:256KB+64KB

共计384KB SRAM

Memory Compiler定制

采用Artisan公司提供的Memory Compiler定制如下

number of words:RAM深度

number of bits:RAM宽度

Library Compiler .lib转.db

Synopsys DC K2015.06及以后版本不再支持.lib转.db功能,而Foundry提供定制SRAM的Memory Compiler通常只能生成.lib文件,因此需要用从Synopsys DC工具独立出来的Library Compiler工具将.lib文转为.db文件。

值得吐槽的是,Synopsys ICC也需要依赖MilkWay工具将LEF转成的MilkWay的CEL/FRAME VIEW,而Cadence innovus即可直接使用LEF,提高了效率并减少了中间环节犯错的可能,设计流程简洁化是孜孜以求的目标。

LC的使用步骤:

  • 启动LC:lc_shell

  • read_lib  xxx.lib

读过程中有Warning:does not have a internal power group,可忽略,但一定要看到“Technology library ‘xxx’ read successfully”。

  • write_lib -format db -output xxx.db  xxx(lib name)

产生的db文件即可用于DC逻辑综合,至于Vendor提供的Memory Compiler则是多种多样的,无论GUI模式、Batch模式都可以快捷生成SRAM.lib文件。

散发下思绪,如下图所示,6T SRAM由M1、M2组成一个inverter,由M3、M4组成另一个inverter,这俩个inverter的output分别接到另一个inverter的input,构成一个latch,从而可以将数据锁住,而M5、M6则是WL开关,一起打开关闭。

连接到M5、M6的gate信号是word line(缩写成WL),是用来控制SRAM bit-cell的开关信号,M5、M6一起打开或关闭。M5、M6的Drain端是读出或写入的bit line(缩写成BL)。若要写入1,则BL驱动电压为VDD;若要写入0,则BL驱动电压为0。

那么DRAM的原理呢?后面在介绍SDRAM控制器设计原理。

欢迎加入CIS、MCU技术交流群,先加我微信,我拉你进群!

感谢阅读,别走!点赞、关注、转发后再走吧

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 基于开源的 RISC-V 核——PicoRV32,我们可以搭建一个简单的片上系统(SoC)。首先,我们需要明确片上系统包含的核心组件:处理器核心、内存、总线、外设和系统接口等。 首先,我们可以将 PicoRV32 核心作为处理器核心引入片上系统。PicoRV32 是一个简洁而高效的 RISC-V 处理器,它是开源的,并且易于扩展和定制。 其次,我们需要添加适当的内存组件来存储程序和数据。常见的内存组件包括静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)。我们可以根据实际需求选择合适的内存组件。 然后,我们需要设计一个总线系统,用于连接处理器核心、内存和外设。常见的总线标准包括存储器映射I/O总线(Memory-Mapped I/O Bus)和高级扩展总线(Advanced Extensible Interface)。我们可以选择适合需求的总线标准,并设计总线连接线路。 接下来,我们需要添加外设来扩展功能。外设可以包括但不限于串口、以太网控制器、图形处理器或显示控制器等。我们可以根据实际需求选择适合的外设,并将其连接到总线系统上。 最后,我们需要设计系统接口,包括时钟和复位电路、电源管理、调试接口等。这些接口可以确保系统的正确运行和调试。 总的来说,基于开源的 PicoRV32 核心,我们可以搭建一个完整的片上系统(SoC),包括处理器核心、内存、总线、外设和系统接口等组件。这样的系统可以用于各种应用,例如嵌入式系统、物联网设备、嵌入式计算平台等。在搭建过程中,我们需要根据实际需求选择合适的组件,并设计相应的连接和接口电路。通过这样的搭建过程,我们可以实现一个基于开源的 SoC,并对其进行定制和扩展。 ### 回答2: 要基于开源的risc-v核——picorv32搭建一个完整的SOC(片上系统),可以按照以下步骤进行: 1. 硬件设计:根据picorv32的开源设计,可以使用HDL语言(如Verilog)编写硬件描述文件,包括CPU核心、存储器、外设控制器等。可以选择添加适合自己需求的外设,如UART、SPI、GPIO等。 2. 硬件实现:基于上一步的硬件描述文件,使用FPGA开发工具进行逻辑综合、布局布线和生成比特流文件。可以选择常见的FPGA平台,如Xilinx、Altera等。 3. 软件开发:使用RISC-V架构的编译器工具链进行软件开发。首先,编写启动代码和链接脚本,以初始化SOC的外设,设置中断处理等。然后,根据需求编写C/C++代码或汇编代码来实现特定功能或应用程序。 4. 烧录和调试:将生成的比特流文件烧录到FPGA开发板上,然后在开发环境中配置相应的调试接口(如JTAG、UART等)来进行调试和测试。可以使用调试工具,如GDB,来单步调试程序。 5. 系统调试和优化:一旦SOC成功启动,可以通过外设接口与SOC进行交互,并根据实际需求进行系统调试和优化。可以添加额外的外设、调整时钟频率、优化算法或引入其他性能提升措施。 需要注意的是,在搭建SOC的过程中,会涉及到硬件设计、底层软件开发和FPGA调试等多个领域的知识。因此,需要具备相关的技术背景和经验,并参考picorv32的开源文档和社区资料进行学习和实践。 ### 回答3: 搭建一个基于开源的 RISC-V 核 picorv32的完整SOC(片上系统)可以通过以下步骤实现。 首先,我们需要明确要搭建SOC的目标和组件。一个完整的SOC通常包括一个或多个CPU核心、内存控制器、外设控制器、总线接口、外设设备等。在这个例子中,我们将使用picorv32作为CPU核心。 其次,我们需要根据具体需求,在picorv32的基础上添加所需的组件。例如,我们可以添加一个RAM作为内存控制器,并使用I2C控制器控制一个外设设备。我们还可以使用像AXI或AHB这样的总线接口,将CPU核心与其他组件连接起来。 然后,我们需要编写代码来实现这些组件及其之间的通信和控制。对于picorv32核心,可以使用Verilog或SystemVerilog编程语言来描述其行为和功能。同样,我们需要编写代码来描述内存控制器、外设控制器和总线接口等组件。 接下来,我们使用一个合成工具,例如Yosys或Vivado,将Verilog代码综合成一个逻辑电路。这需要处理和优化代码,生成相应的网表和约束文件。 在综合完成后,我们将使用布局工具(如OpenLANE)对设计进行布局。布局工具可以根据所需的规格约束和性能要求将逻辑电路映射到实际的物理芯片上。 接下来,我们使用物理验证工具(如Magic)对设计进行验证,确保所有信号/功率完整性和时序满足要求。 最后,我们将设计加载到FPGA芯片或ASIC芯片上,并通过仿真和测试验证SOC的功能和性能。 通过以上步骤,我们可以搭建一个基于开源的RISC-V核picorv32的完整SOC,在自己的项目中使用和调试。这将提供给我们一个高度可定制和灵活的SOC架构,适应我们特定的应用需求。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值