upf低功耗的一个简单的例子

2023-11-06

一.结构描述

在这里插入图片描述
这里是一个uart_top模块里面例化了两个uart,分别给两个模块给了power_switch,用于电源控制,对这两个模块分别进行隔离关断来写一个简单的upf。

二.代码分析

1.电压域

### create power domain ###
create_power_domain {uart_top}
create_power_domain {uart_1} -elements {u_uart_1}
create_power_domain {uart_2} -elements {u_uart_2}

注意点1:电压域的中这里没有用到scope的内容,create_power_domain {uart_top} 这表达的含义就是uart_top为顶层的意思,不需要使用scope。
注意点2:代码第二行中的{uart_1}是取的名字,是可以随意取的,不影响代码。

2.供电端口及网络

### power supply network ###
create_supply_port {VDD}
create_supply_net  {VDD} -domain {uart_top}
connect_supply_net {VDD} -ports  {VDD}

create_supply_port {VSS}
create_supply_net  {VSS} -domain {uart_top}
connect_supply_net {VSS} -ports  {VSS}

create_supply_net  {VDD}   -domain {uart_1} -reuse
create_supply_net  {VSS}   -domain {uart_1} -reuse
create_supply_net  {VDD_1} -domain {uart_1}

create_supply_net  {VDD}   -domain {uart_2} -reuse
create_supply_net  {VSS}   -domain {uart_2} -resue
create_supply_net  {VDD_2} -domain {uart_2} 

### specfiy the primary supply ###
set_domain_supply_net {uart_top} -primary_power_net {VDD}   -primary_ground_net {VSS}
set_domain_supply_net {uart_1}   -primary_power_net {VDD_1} -primary_ground_net {VSS}
set_domain_supply_net {uart_2}   -primary_power_net {VDD_2} -primary_ground_net {VSS} 

注意点1:create_supply_port 为定义端口,create_supply_net为定义线,connect_supply_net…ports是线和端口连起来,这里VDD用了两次,一个是端口名字,一个是线的名字。
注意点2:VDD是可以复用的,复用的方法为-reuse。
注意点3:定义好端口,线,连上之后,需要使用set_domain_supply_net明确供电线和地线。

3.电源开关

### power switch ###
create_power_switch uart1_sw \
	-domain				{uart_1} \
	-input_supply_port 	{vin VDD} \
	-output_supply_port {vout VDD_1} \
	-control_port		{swctrl sw_ctrl1} \
	-on_state			{sw1_on vin {!swctrl}}

create_power_switch uart2_sw \
	-domain				{uart_2} \
	-input_supply_port 	{vin VDD} \
	-output_supply_port {vout VDD_2} \
	-control_port		{swctrl sw_ctrl2} \
	-on_state			{sw2_on vin {!swctrl}}

注意点1:\之后不要跟空格,不然仿真中会报错
注意点2:sw_ctrl1和sw_ctrl2需要在rtl中进行wire定义并assign赋值,这里vin{!swctrl}所以值为0时候为打开电源开关。

4.电源状态描述

### define power state ###
add_port_state {VDD}  -state {TOF_HV 1.0}  -state {TOP_OFF off}
add_port_state {VSS}  -state {GND 0.0}
add_port_state {uart1_sw/vout} -state {VDD_1_HV 1.0} -state {VDD_1_OFF off}
add_port_state {uart2_sw/vout} -state {VDD_2_HV 1.0} -state {VDD_2_OFF off}

### define port state table for system ###
create_pst {uart_pst} -supplies {VDD VDD_1 VDD_2 VSS}
add_pst_state {add_on1} -pst {uart_pst} -state {TOP_HV  VDD_1_HV  VDD_2_HV  GND}
add_pst_state {add_on2} -pst {uart_pst} -state {TOP_HV  VDD_1_HV  VDD_2_OFF GND}
add_pst_state {add_on3} -pst {uart_pst} -state {TOP_HV  VDD_1_OFF VDD_2_HV  GND}
add_pst_state {add_on4} -pst {uart_pst} -state {TOP_OFF VDD_1_HV  VDD_2_HV  GND}

注意点:add_port_state{uart1_sw/vout}这句话代表的就是VDD_1的值,但是不能直接用VDD_1,因为,VDD_1是一根线,not port,所以直接用会报错。

5.隔离单元

### define isolation constranints ###
set_isolation {uart1_iso_out} \
	-domain {uart_1} \
	-clam_value 0 \
	-applies_to outputs \
	-isolation_power_net {VDD} \
	-isolation_ground_net {VSS}

set_isolation {uart1_iso_out} \
	-domain uart_1 \
	-isolation_signal {uart_iso_on_1} \
	-isolation_sense low \
	-location self
	
set_isolation {uart2_iso_out} \
	-domain {uart_2} \
	-clam_value 0 \
	-applies_to outputs \
	-isolation_power_net {VDD} \
	-isolation_ground_net {VSS}

set_isolation {uart2_iso_out} \
	-domain uart_2 \
	-isolation_signal {uart_iso_on_2} \
	-isolation_sense low \
	-location self

注意点:uart_iso_on_1和uart_iso_on_2需要在rtl中定义wire类型并赋值,低电平表示隔离有效。

三.仿真

仿真参考之前写的文章:upf+vcs仿真

四.拓展阅读

推荐一:低功耗设计——基于UPF进行设计
推荐二:UPF基本概念学习

五.VCLP调试

问题(1)

add_pst_state {add_on4} -pst {uart_pst} -state {TOP_OFF VDD_1_HV  VDD_2_HV  GND}

这个状态虽然在vcs联合仿真中没有报错,但是VCLP中会显示worring,去掉。
问题(2)
-location self 应该改为-location parent。
顶层用self,其他用parent。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

upf低功耗的一个简单的例子 的相关文章

  • Quartus II 安装

    本次介绍使用的 Quartus 版本为 10 1 目前 Quartus II 官网已经没有 13 1 以下版本的安装包 大家可以安装 13 1 以上版本的软件 功能都是大同小异 下载地址 FPGA Software Download Cen
  • 8x8LED点阵

    点量这个只需要把9高电平 13低电平就可以了 共阳极点阵 行线是led的正极 列线是led的列线 左上角点亮 显示多个灯是动态扫描的 一个一个显示的 然后间隔速度要快就可以造成显示 点阵由两篇74Hc595级联在一起驱动的 只需要三个io口
  • Verilog:【1】时钟分频电路(clk_divider.sv)

    碎碎念 作为Basic Verilog的第一个学习笔记 打算用这种命名方式来对博客进行命名 应该有助于检索 简单阅览了部分工程的代码 发现里面有很多嵌套关系 因此决定先从基础模块开始 也是为了整个博客内容的流畅性 读者朋友有问题的话 也可以
  • HDLBits — Verilog Practice(每日一题)

    HDLBits Verilog Practice 每日一题 一 Getting Started 1 Getting Started 一 Getting Started 1 Getting Started 问题描述 Build a circu
  • 硬件基础知识

    SPI是串行外设接口 Serial Peripheral Interface 的缩写 是一种高速的 全双工 同步的通信总线 SCLK SCLK是一种有固定周期并与运行无关的信号量 CLK CLK是一种脉冲信号 TDNN 时延神经网络 它的两
  • DEBUG:Generate Bitstream失败

    问题 约束失败 解决 确保IO初始化引脚正确 和选择合适的电平
  • verilog中wire和reg类型的区别

    module counter parameter CNT MAX 25 d24 999 999 input wire sys clk input wire sys rst n output reg led out reg 24 0 cnt
  • 笔试

    文章目录 前言 40 复位电路设计 1 recovery time和removal time 2 同步复位和异步复位 3 异步复位同步释放 本文参考 往期精彩 前言 嗨 今天来学习复位电路设计相关问题 微信关注 FPGA学习者 获取更多精彩
  • 小梅哥Xilinx FPGA学习笔记9——语法(阻塞与非阻塞赋值)

    阻塞赋值与非阻塞赋值详解 注意 阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 非阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 注意 阻塞赋值与非阻塞赋值 只有在时序逻辑中才有 不是阻塞赋值 也不是非阻塞赋值
  • FPGA提示产生latch的报错

    在fpga的设计中有时会遇到 latch 的报错 1 latch是什么 Latch 就是锁存器 是一种在异步电路系统中 对输入信号电平敏感的单元 用来存储信息 锁存器在数据锁存使能时 数据被锁存 输入信号不起作用 这违背了组合逻辑中输出随输
  • 【数字IC】从零开始的Verilog SPI设计

    从零开始的Verilog SPI协议设计 一 写在前面 1 1 协议标准 1 2 数字IC组件代码 1 3 设计要求 1 4 其他协议解读 1 4 1 UART协议 1 4 2 SPI协议 1 4 3 I2C协议 1 4 4 AXI协议 二
  • [从零开始学习FPGA编程-28]:进阶篇 - 基本组合电路-奇偶校验生成器(Verilog语言版本)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 奇偶校验生成器 1 1 什么是奇校验 1 2 Verilog语言描述
  • [HDLBits] Exams/ece241 2014 q7a

    Design a 1 12 counter with the following inputs and outputs Reset Synchronous active high reset that forces the counter
  • PAJ7620U2手势识别——配置0x00寄存器(3)

    文章目录 前言 一 为啥要配置0x00寄存器 二 配置步骤 1 单个读操作步骤图 2 模块状态转移图绘制 3 模块波形图绘制 4 上板验证 5 参考代码 总结 前言 在前面的教程中 小编带领各位读者学习了如何通过I2C协议去唤醒PAJ762
  • 使用七牛云进行文件上传

    目录 一 七牛云入门测试 1 注册七牛云账号 完成后选择对象存储 2 在里面创建空间 一个空间相当于一个文件夹 就是将对象上传到的地方 3 查看个人秘钥 注册完成账号后 会有一个秘钥 上传文件的时候进行授权和认证 4 文件上传测试 二 封装
  • 基于FPGA的AHT10传感器温湿度读取

    文章目录 一 系统框架 二 i2c接口 三 i2c控制模块 状态机设计 状态转移图 START INIT CHECK INIT IDLE TRIGGER WAIT READ 代码 四 数据处理模块 串口 代码 五 仿真 testbench设
  • 时序约束理解

    异步配置信息 跨时钟域 配置信息一般set max delay按照3delay来约束 2 异步回读 rst clear信号 设置set false path 放松时序约束要求 不应分析设计中的逻辑路径 因为不关心点到点时序要求
  • Vivado ILA的debug信息保存与读取

    保存 write hw ila data D Project FPGA ILA Debug Data 202401041115 ila upload hw ila data hw ila 1 读取 display hw ila data r
  • MINI-UTDE 10 BASE-T 集成控制器

    MINI UTDE 10 BASE T 集成控制器 MINI UTDE 10 BASE T 拥有多达三个本地I O板和远程I OS总线通信 为用户提供了一系列生产单元功能的单一控制点 包括诸如夹头 反馈器和辅助机器等外围生产设备 支持所有主
  • DSCA190V 57310001-PK

    DSCA190V 57310001 PK DSCA190V 57310001 PK 具有两个可编程继电器功能 并安装在坚固的 XP 外壳中 DSCA190V 57310001 PK 即可使用 只需最少的最终用户校准 DSCA190V 573

随机推荐

  • STM32 usb 设备实现自动重枚举

    在开发USB设备时可能会经常遇到烧录程序后要重新拔插USB接口才能使USB设备正常工作 原因是因为重新烧录后 PC没有对USB设备进行重枚举 导致无法正常工作 解决方法很简单 我们只要在程序启动后第一时间对USB接口的DP引脚进行一下拉低操
  • Web自动化Selenium-JavaScript的应用

    JavaScript是Web页面的编程语言 Selenium提供了execute script方法 用来执行JavaScript 从而完成一些特殊的操作 操作页面元素 我们可以借助JavaScript操作页面元素 如在搜索框中输入文字 单击
  • Sublime text3 Version 3.22下载安装及注册

    文章目录 前言 一 下载Sublime Text 3 1 本机系统配置 Windows10 64位 2 下载链接 3 安装 二 注册 3步走 1 修改hosts文件 2 修改编辑 sunlime text exe 3 注册 三 参考文章 前
  • c++SQLite

    SQLite C 操作类 转载于 http blog csdn net chinamming article details 17049575 0 tsina 1 1347 397232819ff9a47a7b7e80a40613cfe1
  • 【前端部署】vue项目打包并部署到Linux服务器

    文章目录 一 打包vue前端项目 二 安装nginx 1 下载及安装 2 启动程序 3 其他命令 三 利用WinSCP传输文件 四 配置nginx 1 修改服务器端口 2 修改dist存放路径 3 完整配置文件 五 进入界面和项目更新 1
  • office2021专业增强版,使用kms命令行激活

    以管理员身份运行cmd 注意 必须以管理员身份运行 分别输入以下命令 cd C Program Files Microsoft Office Office16 cscript ospp vbs sethst kms 0t net cn cs
  • sqli-labs通关全解---有关过滤的绕过--less23,25~28,32~37--8

    preg replace 参数 作用 pattern 正则表达式或者要匹配的内容 replacement 要替换的内容 subject 要操作的对象 preg replace 用于sql注入防护中 主要是将一些疑似攻击的代码进行替换处理 从
  • python 获取毫秒级时间问题

    根据网上的一些说法 在python里获取ms级系统时间可以通过以下方式获取 import datetime print datetime datetime now microsecond 但通过以下代码测试 发现返回的并不是ms的值 而是u
  • 适用于Windows 10开发人员的Hyper-V

    Microsoft Hyper V codenamed Viridian is a native type 1 hypervisor that directly runs on the hardware compared to VMware
  • 2023年无人航空系统与航空航天国际会议(ICUASA 2023)

    2023年无人航空系统与航空航天国际会议 ICUASA 2023 重要信息 会议网址 www icuasa org 会议时间 2023年2月18 20日 召开地点 中国广州 截稿时间 2023年12月30日 录用通知 投稿后2周内 收录检索
  • numpy、pandas实用总结(3种数据合并)

    前言 将俩个或者多个DataFrame合并在一起 这样的操作在日常工作中是极为频繁的一件事情 目前 我所知的有四种将DataFrame合并在一起 的方法 concat 在Series中也可以使用 merge join concat合并 这种
  • hdu 1438 钥匙计数之一

    Problem acm hdu edu cn showproblem php pid 1438 Reference blog csdn net u010405898 article details 9530769 blog csdn net
  • 线程池+枚举+反射调用不同接口获得统一返回数值

    首先接口函数的定义 使用策略模式 不同的接口实现类统一实现一个被实现的接口类 public interface ThreadServiceBase 用来被继承使用 然后不同的接口实现类都实现这个接口 每个实现类有自己的定义业务接口 例如 接
  • c++命名空间

    介绍C 命名空间的一篇文章 刚刚学C 的时候 我被满篇的域作用符号 都搞晕了 这篇文章终于让我熟悉了C 的命名空间 为什么需要命名空间 如何使用命名空间 当然 觉得java的import机制更加优雅 至少没有满篇的域作用符 一 为什么需要命
  • Java中Static关键字的使用

    1 Static关键字的用途 1 1 Static修饰成员变量 1 1 1 Static修饰成员变量的需求 当我们在代码中出现一个成员变量在我们每次创建不同的对象时 所赋值都一样 我们就可以把它放在一个公共区域内 不管几个对象都可以操作使用
  • Arduino+sim800C家居安防火灾报警 拨打电话 发送短信例程程序

    家居安防报警器 参考程序 火灾报警 涉及用sim800c发短信 拨打电话通知 接线 Sim800c 3 3V gt Arduino 3 3V Sim800c GND gt Arduino GND Sim800c RX gt Arduino
  • BES2300x笔记(24) -- 如何进行软件加密保护

    哈喽大家好 这是该系列博文的第二十四篇 篇 lt lt 系列博文索引 快速通道 gt gt 以下内容基于原厂提供的文档整理润色 一 前言 由于当下知识产权意识的普遍淡薄 当我们开发一款产品 推向市场之后 如何能防止第三方破解代码 便成了维护
  • 【解决问题】idea的右上方工具栏不见了的解决办法

    前一天使用idea还正常的 第二天看idea的时候 idea右上方的工具栏不见了 截图如下 那么如何让她显示出来了呢 方案1 目标 显示在右上方 在3的前面勾选下 打钩的话就行 打钩后结果 方案2 目标 显示在左上方 在3出打钩 效果如下
  • git 清除所有untracked file

    上次合并分支的时候 出现了一些没见过的文件 有 orig等等 如下图 接下来 就是git的神奇操作命令 git clean f 将所有untracked file 一次性删除 就大功告成了
  • upf低功耗的一个简单的例子

    一 结构描述 这里是一个uart top模块里面例化了两个uart 分别给两个模块给了power switch 用于电源控制 对这两个模块分别进行隔离关断来写一个简单的upf 二 代码分析 1 电压域 create power domain