检查floating pin

proc CheckInputTermFloat {outputfile} {
    set file [open $outputfile w]
    #1.获取所有输入pin的名称
    foreach pin [dbGet [dbGet top.insts.instTerms.isInput 1 -p].name] {
        #2.排除电源pin
        if {[dbGet [dbGet top.insts.instTerms.name $pin -p].net.isPwrOrGnd] == 0} {
            #3.获取pin连接的net和net的输出pin的个数
            if {[dbGet [dbGet top.insts.instTerms.name $pin -p].net] == 0x0} {
                puts $file "$pin no Net,please check verilog"
            } elseif {[dbGet [dbGet top.insts.instTerms.name $pin -p].net.numOutputTerms] == 0} {
                set net [dbGet [dbGet top.insts.instTerms.name $pin -p].net]
                puts $file "$pin's $net no outputTerm,please check" 
            }
        }
    }
    puts "please care lvs result"
    close $file 
}
原文连接:innovus检查信号端输入悬空的脚本-CSDN博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为下面每一行代码添加注释:#include "stm32f10x.h" void RCC_Configuration(void) { /* Enable GPIOA, GPIOC and AFIO clocks / RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); / Enable SYSCFG clock / RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; / Configure PA0 pin as input floating / GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); / Configure PC13 pin as output push-pull / GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); } void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure / Configure the NVIC Preemption Priority Bits / NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); / Enable the EXTI0 Interrupt / NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void EXTI_Configuration(void) { EXTI_InitTypeDef EXTI_InitStructure; / Configure EXTI Line0 to generate an interrupt on falling edge / EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); / Connect EXTI Line0 to PA0 pin / GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); } void SysTick_Configuration(void) { / Configure SysTick to generate an interrupt every 1ms / if (SysTick_Config(SystemCoreClock / 1000)) { / Capture error / while (1); } } void Delay(__IO uint32_t nTime) { / Wait for nTime millisecond / TimingDelay = nTime; while (TimingDelay != 0); } void TimingDelay_Decrement(void) { if (TimingDelay != 0x00) { TimingDelay--; } } int main(void) { RCC_Configuration(); GPIO_Configuration(); NVIC_Configuration(); EXTI_Configuration(); SysTick_Configuration(); / Infinite loop / while (1) { / Toggle PC13 LED every 500ms / GPIOC->ODR ^= GPIO_Pin_13; Delay(500); } } void EXTI0_IRQHandler(void) { / Check if PA0 button is pressed / if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == RESET) { / Reset MCU / NVIC_SystemReset(); } / Clear EXTI Line0 pending bit */ EXTI_ClearITPendingBit(EXTI_Line0); }
06-03
// 引入STM32F10x库 #include "stm32f10x.h" // 配置RCC void RCC_Configuration(void) { // 使能GPIOA, GPIOC和AFIO时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); // 使能SYSCFG时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); } // 配置GPIO void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; // 配置PA0引脚为浮空输入模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置PC13引脚为推挽输出模式,速率50MHz GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); } // 配置NVIC void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; // 配置NVIC抢占优先级位数 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); // 使能EXTI0中断 NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } // 配置EXTI void EXTI_Configuration(void) { EXTI_InitTypeDef EXTI_InitStructure; // 配置EXTI Line0在下降沿触发中断 EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); // 将EXTI Line0连接至PA0引脚 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); } // 配置SysTick void SysTick_Configuration(void) { // 配置SysTick使其每1ms产生一次中断 if (SysTick_Config(SystemCoreClock / 1000)) { // 发生错误 while (1); } } // 延时函数 void Delay(__IO uint32_t nTime) { // 等待nTime毫秒 TimingDelay = nTime; while (TimingDelay != 0); } // 延时计数器递减函数 void TimingDelay_Decrement(void) { if (TimingDelay != 0x00) { TimingDelay--; } } // 主函数 int main(void) { RCC_Configuration(); GPIO_Configuration(); NVIC_Configuration(); EXTI_Configuration(); SysTick_Configuration(); // 无限循环 while (1) { // 每500ms交替改变PC13引脚的电平 GPIOC->ODR ^= GPIO_Pin_13; Delay(500); } } // EXTI0中断处理函数 void EXTI0_IRQHandler(void) { // 检查PA0引脚的按键是否被按下 if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == RESET) { // 复位MCU NVIC_SystemReset(); } // 清除EXTI Line0的中断挂起位 EXTI_ClearITPendingBit(EXTI_Line0); }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值