- 博客(235)
- 资源 (5)
- 收藏
- 关注
原创 python os
os.getcwd() os.getcwdb()>>> os.getcwd()'D:\\Users\\dyan\\AppData\\Local\\Programs\\Python\\Python35'>>> os.getcwdb()b'D:\\Users\\dyan\\AppData\\Local\\Programs\\Python\\Python35'
2016-06-06 19:47:25
423
原创 python 网络编程
1server: bind->listenclient:connectserver:import sockets = socket.socket()host = socket.gethostname()port = 1234s.bind((host, port))s.listen(5)while True: c, addr = s.accept()
2016-06-05 18:04:38
312
原创 python sqlite3
1.建立,连接:>>> import sqlite3>>> conn = sqlite3.connect('sd.db')>>> curs = conn.cursor()2.提交:>>> conn.commit()每次修改都提交,而不是关闭时才提交。3.关闭:>>> conn.close()
2016-06-05 13:46:41
305
原创 python 文件操作
1open 第三个参数是 是否缓冲。False 无缓冲,直接操作硬盘。 True 操作内存,速度快。flash或close 才会更新硬盘数据>>> f = open('somefile.txt', 'w')>>> f.write("hello. ")7>>> f.write("World!")6>>> f.close()hello. World!>>> f = open(
2016-06-05 11:14:07
257
原创 python: re
. 可以匹配任何字符(除了换行)[pj]ython 匹配python, jython。[a-zA-Z0-9] 只能匹配一个这样的字符。[^abc]匹配除了a,b,c之外的字符。python|perl == p(ython|erl) 子模式子模式后面加 ?。就是非必须。>>> r'(http://)?(www\.)?python\.org'(pattern)* 0次以上
2016-06-04 15:52:49
208
原创 python 常用模块
1.告诉解释器哪里找模块:>>> import sys>>> sys.path.append('c:/python')unix要绝度路径只有第一次导入执行。>>> __name__'__main__'2.当做包,必须包含一个命名为__init__py的文件(模块)3.dir看模块里有什么下划线开始,不是给模块外部用的。过滤:>>> impor
2016-06-03 21:09:20
199
原创 WAVE 包头
1在Mmreg.h里https://msdn.microsoft.com/en-us/library/ms713498.aspxhttps://msdn.microsoft.com/en-us/library/ms713497.aspxtypedef struct { WORD wFormatTag; WORD nChannels; DWORD
2016-06-03 11:28:20
402
原创 最终解决:idle your python may not be configured for tk
1.安装完python3报告题目错误。2.按照网上升级匹配的tk,还是错。3再装一遍python3 就好了。
2016-06-02 14:39:34
1704
原创 div 和 span
1div的 width 属性只指定内容区宽度。2.子孙选择器。#elixirs blockquote h2 { color: blue;}3简写:padding:0px 10px 20px 40px TRBL margin4个值一样 padding:20pxmargin:0px 20px; 上下
2016-05-30 21:20:31
235
原创 css 小语法
1只能对body元素增加样式2border-bottom会延伸到页面边缘。underline只出现在文本下面。text-decoration="underline"3希望一个class所有元素都有同一种样式。可以用..greentea{ /*前面有个点*/ color: green;}
2016-05-29 20:42:03
207
原创 html 小标签
换行 1)都是块元素。2) 两两总是要一起使用3)列表中可以在嵌套列表4)还有定义列表定义术语定义描述>: > 有分号&: &w3schoolswww.unicode.org/charts============================
2016-05-29 12:03:26
343
原创 生成器
任何包含yield 语句的函数称为生成器。yield不像return 返回值,而是每次产生多个值。每次产生一个值时,函数就会被冻结。被激活后从停止点开始.def flatten(nested): for sublist in nested: for element in sublist: yield element>>> nested =
2016-05-27 18:02:25
153
原创 class2,迭代
super内置方法:__len__(self), __getitem(self, key) , __setitem__(self, key,value), __delitem__(self, key)property: 4个参数分别是fget, fset, fdel docclass rect: def __init__(self): self.width =
2016-05-27 17:50:47
197
原创 异常
>>> raise ExceptionTraceback (most recent call last): File "", line 1, in raise ExceptionException>>> raise Exception('overlaod')Traceback (most recent call last): File "", line 1, in
2016-05-27 10:51:18
210
原创 class
>>> from random import choice>>> x=choice(['hello world', [1,2,'e','e',4]])>>> x.count('e')1>>> 让方法变成私有,在名字前面加双下划线:>>> class secret: def __inacc(self): print("cannot") def acc(self):
2016-05-27 10:05:57
281
原创 python 函数
callable判断 一个东西 是否可以调用。感觉没啥用!!!>>> x=1>>> import math>>> y=math.sqrt>>> callable(x)False>>> callable(y)True__doc__>>> def square(x): 'calculate the square of the number x' return x*
2016-05-26 20:50:19
226
原创 python语句
>>> values(1, 2, 3)>>> x,y,z=values>>> x1>>> y2>>> z3函数可以返回一个以上的值,打包成tuple。接受数量要一致。is是同一性预算符。>>> x=y=[1,2,3]>>> z=[1,2,3]>>> x is yTrue>>> x is zFalse>>> 因为x和y绑定到
2016-05-26 17:31:24
171
原创 字典
>>> items = [('name', 'Gumby'), ('age', 42)]>>> d =dict(items)>>> d{'age': 42, 'name': 'Gumby'}>>> d = dict(name="gumby", age=42) key 没有引号>>> d{'age': 42, 'name': 'gumby'}>>> >>> len(d
2016-05-26 15:34:48
178
原创 string
from string import Templatefind返回最左端索引,没有-1>>> 'with moo-moo here'.find('moo')5>>> 'with moo-moo here'.find('mooo')-1可选起始点和结束点,包含第一个index,不包括第二个index,和切片一样。>>> sub = '$$$ Get rich
2016-05-25 09:36:14
230
原创 元祖
逗号很重要:>>> 4242>>> (42)42>>> (42,)(42,)>>> 3*(34+3)111>>> 3*(34+3,)(37, 37, 37)>>> >>> tuple('abc')('a', 'b', 'c')
2016-05-25 08:25:00
214
原创 python 写文件
file_ex = open('data.txt', 'w')如果文件已存在,完全清除现有内容。如果不存在,则创建。追加到文件,使用 a。读和写,不清除,用 w+
2016-05-23 07:05:34
258
原创 python 变量赋值的理解
再看python 基础教程,里面讲 x=3 这种赋值。两种解释:第1种说法是把3 赋值给x, 和c 一样。第2中说法是把x 绑定到值(或者对象)3 上面。这种区别像是谁先存在内存中。我觉得第二种说法更好,体现了pyhton 无处不对象的原则。另外getrefcount 也体现了这点。
2016-05-18 06:53:55
395
原创 UVM:10.6.2 config_db 的替代者
1.可以完全不使用config_db2.config_db 设置的参数有两种,一种是结构性参数,如控制driver是否例化的is_active:agent时指定:3非结构性的参数:build_phase:也可在build_phase 之后的任意phase 使用绝对路径进行设置:1)向sequence 中传递参数,可以像10.3.2节,在vir
2015-07-10 14:47:06
918
原创 UVM:10.6.1 换一个phase 使用config_db
1.config_db::set 的第二个参数是字符串,经常出错,可以通过get_full_name 来获得。对driver 进行设置:对sequence 某个参数设置,可以:2.但在build_phase 时,整棵UVM 树还为形成,会引起空指针错误。要想这么做有两种方法:1)都在new 中create2)将set 移到connect_phase,由于co
2015-07-10 14:17:37
611
原创 UVM:10.5.2 聚合参数的优势与问题
1.使用聚合参数后,可以将此参数类的指针放在virtual sequencer中:2.当sequence 要动态改变验证平台某个变量时,如下:3.甚至可以将interface 也放入聚合参数:4.这样,无论是driver 还是monitor 中,都可以直接用cfg.vif,不必在使用config_db 来得到interface:1)因
2015-07-10 12:14:45
706
原创 UVM:10.5.1 聚合参数的定义
1.验证平台用到的参数有两大类:1)验证环境和DUT 都要用到的参数,通常对应DUT 中的寄存器。10.4.22)验证环境独有的。2.达到项目配置参数可能有千百个。全部用config_db:3.比较好的方法是放在专门的类里:经过上述定义后,可以在base_test 中这样写:省略了绝大多数的set,在driver 如下使用这个聚合参数:
2015-07-10 11:36:18
764
原创 UVM:10.4.2 使用单独的参数类
1.需要一种跨越寄存器的约束。要求2个field 的和大于100。只有上节第二种能实现:2.由于这个约束对所有测试都适用,因此希望写在寄存器模型的constraint 里:3.这个寄存器模型使自己手工创建的,没问题。但在IC 中,寄存器模型都是由一些脚步命令自动创建的。在验证平台中,用到寄存器的地方有3个:RTLsystemverilogC语言1)必须时刻保
2015-07-10 10:44:25
704
原创 UVM:10.4.1 使用寄存器模型随机化参数
1.验证两大问题:向DUT 灌激励,为DUT 配置参数。2.随机化:3.缩小随机化范围:1)2)或者整体:3)factory 重载:
2015-07-10 10:26:18
1332
原创 UVM:10.3.3 disable fork 语句对原则操作的影响
1.很多计数器的类型是W1C,写1清零。如果正在计数,同时清零操作,可能导致错误。2.解决;1)看似解决了问题,但是出现新情况使程序无法终止。disable fork 之后读取寄存器,会发现寄存器正在写,于是一直等待。2)原因是寄存器模型时原子操作,如果只使用disable fork 野蛮终止,那么此原子操作尚未完成,虽然进程终止了,但是标志位并没有清除,从而出现错误。
2015-07-10 10:02:27
1743
原创 UVM:10.3.2 只将virtual_sequence 设置为default_sequence
1.config_db 最大的问题是不对set 的第二个参数进行检查。2.为了美观对齐:3.如下设置default_sequence:1)i_agt 的default_sequence 没有启动,在i_agt.sqr 调用get_full_name 函数:4.所以只将virtual sequence 设置为default_sequence。其它所有的sequ
2015-07-10 09:36:54
1289
原创 UVM:10.3.1 心跳功能的实现
1.某些协议中,driver 要每隔一段时间向DUT 发送类似心跳的信号。心跳包与普通包没有本质区别也是普通的transaction。两种选择:1)在driver 中产生,发送:2)sequence 实现,无效循环:上述代码最好不要使用绝对延时,而使用virtual sequence。应该如下:心跳包优先级最高,所以grab。2.使用virtua
2015-07-10 09:08:11
827
原创 UVM:10.2.4 错峰技术的使用
1.假如又多一层layer sequence:1)需要2个时间槽。2)需要在增加一个umv_wait_for_nba_region,不好。2.问题的关键是item_done 和try_next_item 在同一时刻被调用,导致了时间槽的竞争。如果能错开,这个问题就不是问题:
2015-07-09 17:28:14
1486
原创 UVM:10.2.3 layer sequence 与try_next_item
1.try_next_item 更加接近实际情况,用的更多:两个有效的req 之间,总会打印item is null,说明driver 没有得到transaction:2.ip_sequence 和my_sequence 没有任何延时,my_driver 理应一直得到有效的req,而不该出现得不到的情况,why?时间槽的概念。问题出在driver 中的try
2015-07-09 15:20:58
2361
原创 UVM:10.2.2 layer sequence 的示例
1.产生ip_transaction 的sequence 如下:2.相应的sequencer 如下:3.这个sequencer 要在my_agent 例化,此时,my_agent 中有两个sequencer:4.要使用layer sequence,最关键是如何将ip_transaction 交给产生my_transaction 的sequ
2015-07-09 12:12:21
1036
原创 UVM:10.2.1 复杂sequence 的简单化
1.之前的my_transaction 是mac 包,其中的pload 是ip 包,如下:2.现在要求mac 中指定ip 地址等数据,需要约束mac 包跑咯爱的值:要对ip_transaction 约束,需自己计算,容易错。3.可简化:可重用性不高。4.加入crc错误,如下:、只变了一行。5.给DUT IP
2015-07-09 11:27:35
752
原创 UVM:10.1.2 可变时钟
1.可变时钟有3种:1)不同case 时钟不同。2)同一case 不关心过渡期clk。3)关心过渡期clk。2.第一种,使用config_db:top_tb 使用get:1)my_case0 就是uvm_test_top。2)使用非直线获取。my_case0的set 是设置给自己的参数,真正使用是在top_tb。3)由于set 在0
2015-07-09 10:31:09
2398
1
原创 UVM:10.1.1 interface 实现driver 的部分功能
1.之前的interface 非常简单:2.实际的interface 可以定义任务与函数,还可以always 和initial。3.8bits 到10bits 在driver 中完成,将串行数据驱动到接口上:4.在interface 做:5.相应的,driver 中可以只驱动到interface 的并行接口上即可:
2015-07-09 10:13:49
2629
Simulink建模与仿真》.pdf
2010-08-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人