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
  • DDR3学习总结(一)

    简介 DDR3 SDRAM常 简称 DDR3 是当今较为常见的一种储存器 在计算机及嵌入式产品中得到广泛应用 特别是应用在涉及到大量数据交互的场合 比如电脑的内存条 对DDR3的读写操作大都借助IP核来完成 本次实验将采用 Xilinx公司
  • 在vivado中使用tcl脚本(UG894)

    本文源自UG894 主要介绍如何在vivado中使用tcl脚本 1 vivado中如何获取tcl help vivado中任何自带的命令都可以通过 help 获取帮助信息 也可以直接输入 help 取得vivado命令合集 并通过 help
  • 平头哥(T-Head )开源RISCV处理器OpenC906 RTL仿真

    在过去的几年里 阿里集团平头哥陆续推出了几款RISCV处理器 有些处理器已经在产业界得到了应用 比如在某志的D1处理器中 就嵌入了平头哥的玄铁C906内核为 芯 RISCV虽然是一个开放标准 并且网络上也不乏一些开源核的RTL实现 但是商用
  • Vivido添加pynq-Z2开发板

    一 下载pynq z2开发板文件 下载地址 https www tulembedded com FPGA ProductsPYNQ Z2 html 二 将下载的文件解压到vivado安装的位置 如果boards目录下面没有boards fi
  • Verilog中forever、repeat、while、for四类循环语句(含Verilog实例)

    当搭建FPGA逻辑时 使用循环语句可以使语句更加简洁易懂 Verilog中存在四类循环语句 如标题 几种循环语句的具体介绍和用法如下 1 forever 连续的执行语句 语法格式 forever
  • MIPI D-PHY介绍(二) FPGA

    MIPI D PHY介绍 二 FPGA 随着移动设备的广泛普及 MIPI D PHY作为其最主要的物理层标准之一 被越来越多地使用在各种嵌入式系统中 本文将详细介绍MIPI D PHY的工作原理和在FPGA设计中的实现方法 MIPI D P
  • PLL时钟约束

    方法 1 自动创建基时钟和 PLL 输出时钟 例 derive pll clocks 这一方法使您能够自动地约束 PLL 的输入和输出时钟 ALTPLL megafunction 中指定的 所有 PLL 参数都用于约束 PLL 的输入和输出
  • 【科普】波特率和比特速率的理解

    什么是波特率 单位时间内传输的码元个数称为波特率 单位为 Baud 那码元又是什么呢 码元又称为 符号 即 symbol 维基百科上对码元的解释 持续一段固定时间的通信信道有效状态就是码元 这么解释比较抽象 可以解释码元的物理意义 在通信信
  • 二、RISC-V SoC内核注解——译码 代码讲解

    tinyriscv这个SoC工程的内核cpu部分 采用经典的三级流水线结构进行设计 即大家所熟知的 取值 gt 译码 gt 执行三级流水线 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 上一篇博文中注
  • 【FPGA】:频率测量

    转载 1 FPGA频率测量的三种方法 直接测量法 间接测量法 等精度测量法
  • 上拉电阻和下拉电阻

    一 定义 上拉电阻 将一个不确定的信号 通过一个电阻与电源VCC相连 固定在高电平 下拉电阻 将一个不确定的信号 通过一个电阻与地GND相连 固定在低电平 二 作用 提高输出信号驱动能力 确定输入信号电平 防干扰 限流 阻抗匹配 抗回波干扰
  • FIFO读写控制

    如果在两个模块之间传输数据 两个模块之间的处理速率不同 会导致采集数据的遗漏或错误 在他们之间加一个数据缓存器 所有数据先经过缓存器缓存 再输入数据接送模块 创建两个模块 一个 作为发送模块 一个作为接受模块 发送模块检测到 fifo为空开
  • 小梅哥Xilinx FPGA学习笔记9——语法(阻塞与非阻塞赋值)

    阻塞赋值与非阻塞赋值详解 注意 阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 非阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 注意 阻塞赋值与非阻塞赋值 只有在时序逻辑中才有 不是阻塞赋值 也不是非阻塞赋值
  • Verilog HDL——Modelsim仿真

    常用testbench语法 finish 和 stop finish任务用于终止仿真并跳出仿真器 stop任务则用于中止仿真 timescale time unit time precision time unit指定计时和延时的测量单位
  • 基于FPGA的AHT10传感器温湿度读取

    文章目录 一 系统框架 二 i2c接口 三 i2c控制模块 状态机设计 状态转移图 START INIT CHECK INIT IDLE TRIGGER WAIT READ 代码 四 数据处理模块 串口 代码 五 仿真 testbench设
  • 【FPGA多周期时序约束详解】- 解读FPGA多周期时序约束的全过程

    FPGA多周期时序约束详解 解读FPGA多周期时序约束的全过程 FPGA作为数字电路设计的常见工具 其设计中必然会遇到时序约束的问题 而多周期时序约束更是FPGA设计中不可避免的难点之一 本文将详细介绍FPGA多周期时序约束的全过程 并结合
  • 时序约束理解

    异步配置信息 跨时钟域 配置信息一般set max delay按照3delay来约束 2 异步回读 rst clear信号 设置set false path 放松时序约束要求 不应分析设计中的逻辑路径 因为不关心点到点时序要求
  • 基于FPGA的简易BPSK和QPSK

    1 框图 2 顶层 3 m generator M序列的生成 输出速率为500Kbps 4 S2P是串并转换模块 将1bit的m序列转换到50M时钟下的2bit M序列数据 就有4个象限 5 my pll是生成256M的时钟作为载波 因为s
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步

随机推荐

  • 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