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

这篇具有很好参考价值的文章主要介绍了upf低功耗的一个简单的例子。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.结构描述

create_power_domain,IC验证,fpga开发
这里是一个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。文章来源地址https://www.toymoban.com/news/detail-635690.html

到了这里,关于upf低功耗的一个简单的例子的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】一个简单的C语言例子,判断一个数是否为2的幂

    目录 步骤和解释: 示例程序: 代码解释: 十进制转化成二进制: 代码解释: 首先我们需要知道的是2的幂次方在二进制中都是只有一个1的: 所以现在我们可以判断,如果二进制中只有一个1,其他位都是0,则这个数就是2的幂次方; 接着,我们使用这个数-1进行与计算,因

    2024年02月14日
    浏览(56)
  • widows必备之power toys(超好用的一个软件)

    这个真的是一个好软件🎈 先看下它的界面吧! 先说怎么下载吧,在Microsoft store和github上都有这个,直接搜索即可 我最常用的就是这个始终置顶和powertoys run的功能,前者可以让我置顶任何想要的窗口,后者可以直接快捷键唤出我们想要打开的文件或者软件,桌面的图标其实

    2024年02月04日
    浏览(40)
  • Qt+JSON简单例子

    json.h json.cpp hello.json json.h json.cpp Cappuccino-jay【QT】Qt使用QJson生成json文件并保存 其实我也恋长安 QT5中如何将数据转换为JSON格式

    2024年02月08日
    浏览(41)
  • iocp简单例子

    首先说明:纯iocp使用的例子看:纯iocp例子(里面的代码可能无法运行,但是下面的代码一定可以运行,可以看看它里面的 PostQueuedCompletionStatus函数的使用,参考参考然后拿出来放到下面的代码里测试,搞几下就能懂了),主要涉及api:PostQueuedCompletionStatus(它可以触发一次

    2024年02月19日
    浏览(33)
  • springboot简单的异常处理例子

    1. ExceptionHandler仅仅处理当前controller的Exception @RestController @RequestMapping(\\\"/ex\\\") public class ExController { @GetMapping(\\\"thex\\\") public String throwEx() throws Exception {     throw new Exception(\\\"exception thrown from ExController.throwEx\\\"); } @GetMapping(\\\"fnfex\\\") public String FileNotFound() throws Exception {     throw new FileNotF

    2024年02月02日
    浏览(67)
  • selenium XPATH 使用简单例子

    定位所有的 a 元素: //a 定位带有特定id属性的元素: //*[@id=“exampleId”] 定位带有特定class属性的元素: //*[contains(@class, “exampleClass”)] 定位包含特定文本的元素: //*[text()=“Example Text”] 定位包含特定部分文本的元素: //*[contains(text(), “Partial Text”)] 定位第一个 元素: /

    2024年02月21日
    浏览(45)
  • Dva.js(基础、简单例子解读)

    简单介绍一下        近期在做react项目时,看到项目中数据的公共存储用的Dva.js,整体的代码结构看起来和vuex差不多,这两天趁着刚忙完,利用工作之余的时间空隙,大致了解了dva的基础理论,代码结构应用,参考着其他优秀的技术大神博主,今天也做个大致的整理。 大致

    2023年04月18日
    浏览(32)
  • STM32CUBEMX 待机模式最简单的RTC定时唤醒(低功耗电池产品必备)

    看到很多技术帖子讲述RTC定时唤醒功能的时候,老是需要去读取当前时间,再设定下一个闹钟唤醒时间,无形中多了很多变量和操作。所以我决定分享一种简单的RTC定时唤醒方法,适合于不需要实现具体时间获取的场合,仅实现RTC定时唤醒的功能。 电池类便携式产品一般都要

    2024年02月03日
    浏览(46)
  • C# Atrribute和反射的简单例子

    Attribute 需要以Attribute 结尾, 并继承Attribute 结果 : 工厂模式 webAPI应用 更换ConnServiceImpl1为ConnServiceImpl2时, 只需要 换为 使用抽象类: 结果:

    2024年02月13日
    浏览(34)
  • 使用Junit进行单元测试的简单例子

    首先新建一个工程,选择合适的路径和JDK版本,其它默认就行。 把Main.java内容改为如下。    后面就是对add方法增加单元测试 在project窗口中右击项目,在菜单中选择:New - Directory 在弹出的提示框中输入目录名:test 。 然后右击 project窗口中 test 目录,在弹出菜单中选择:

    2024年02月09日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包