09 2015 档案
摘要:NOTE: 1.当你写一个placement operator new .请确定也要写出了对应的placement operator delete。如果没有这样做,你的程序可能发生隐晦而时断时续的内存泄漏。 2.当你声明placement new 和placement delete,请确...
阅读全文
摘要:引用:http://blog.csdn.net/naclkcl9/article/details/54259361. verdi 加强了active anotation, active trace和trace this value的能力,并且引入了Temperal flow view。在trace ...
阅读全文
摘要:见:http://www.cnblogs.com/nanoty/p/4355245.html
阅读全文
摘要:NOTE: 1.多重继承比单一继承复杂。它可能导致新的歧义性,以及对virtual继承的需要。 2.virtual 继承会增加大小 速度 初始化(及赋值)复杂度等等成本。如果virtual base class 不带任何数据,将是最具价值的情况。 3.多重继承的确有正当用途。其中一...
阅读全文
摘要:NOTE: 1.private 继承意味 is-implemented-in-terms-of(根据某物实现出)。它通常比复合(composition)的级别低。但是当derivated class需要访问protected base class的成员,或需要重新定义继承而来的virtual函数...
阅读全文
摘要:NOTE: 1.复合(composition)的意义和public继承完全不同。 2.在应用域(application domain),复合意味 has-a(有一个)。 在实现域(implementation domain),复合意味is-implemented-in-terms...
阅读全文
摘要:NOTE: 1.绝不重新定义一个继承而来的缺省参数值,因为缺省参数值都是静态绑定的,而virtual 函数-----你唯一应该覆盖的东西----却是动态绑定的。
阅读全文
摘要:NOTE: 1.绝对不要重新定义继承而来的non-virtual函数。
阅读全文
摘要:NOTE: 1.virtual 函数的替代方案包括NVI手法及Strategy设计模式的多种形式。NVI手法自身是一个特殊形式的Template Method设计模式。 2.将机能从成员函数移到外部函数,带来的一个缺点是,非成员函数无法访问class的non-public成员。 ...
阅读全文
摘要:NOTE: 1.接口继承和实现继承不同。在public继承之下,derived classes总是继承base class的接口。 2.pure virtual 函数只具体指定接口继承及缺省实现继承。 3.impure virtual 函数具体指定接口继承及缺省实现继承。 4.non...
阅读全文
摘要:1.建议每一次项目design要审阅。 出于团队建设的目的。以后若干项目,o18C估计是最复杂的项目了。新员工会源源不断的进来,项目模块永远是之前的同事掌控,项目进度推动迅速,但我们不是土匪,干完一票就不干了,团队成员优势互补还要相互重叠,这样团队才能长青不衰。从团队成员来讲,我一直坚信分享互动才...
阅读全文
摘要:NOTE: 1.derived classes 内的名称会遮掩base classes内的名称。在public继承下从来没有人希望如此。 2.为了让被遮掩的名称再见天日,可使用using 声明方式或转交函数(forwarding functions)。
阅读全文
摘要:NOTE : 1."public继承"意味is-a。适用于base classes 身上的每一件事一定也适用于derived classes身上,因为每一个derived class 对象也都是一个 base class 对象。
阅读全文
摘要:rules:1. event.triggered只会保持一个time_slot,在下一个time_slot将会丢失这个标记,如果不能保证在每一个time_slot都会检测到这个标志,那么将会丢失这个标志。2. 必须保证在->event的同一个或之前的time_slot开始检测triggered.3....
阅读全文
摘要:NOTE1: 1.支持“编译依存性最小化”的一般构想是:相依于声明式,不要相依于定义式。基于此构想的两个手段是Handle classes 和 Interface classes。 2.程序库头文件应该以“完全且仅有声明式”(full and declaration-only forms...
阅读全文
摘要:NOTE: 1.将大多数inline限制在小型 被频繁调用的函数身上。这可使日后的调试过程和二进制升级(binary upgradability)更容易,也可使潜在的代码膨胀问题最小化,使程序的速度提升机会最大化。 2.不要只因为 function templates 出现在头文件,就将...
阅读全文
摘要:略
阅读全文
摘要:NOTE: 1.避免返回handles(包括references 指针 迭代器)指向对象内部。遵守这个条款可增加分装性,帮助const 成员函数的行为像个const,并将发生“虚吊号码牌”(dangling handles)的可能性降至最低。
阅读全文
摘要:NOTE : 1.如果可以,尽量避免转型,特别是在注重效率的代码中避免dynamic_casts。 如果有个设计需要转型动作,试着发展无需转型的替代设计。 2.如果转型是必须要的,试着将它隐藏于某个函数背后。客户随后可以调用该函数,而不需要将转型放进他们自己的代码内。 3.宁可使用C++-...
阅读全文
摘要:NOTE : 1.尽可能延后变量定义式的出现时间。这样做可增加程序的清晰度并改善程序效率。
阅读全文
摘要:STL的东西,总是不懂呀!!!!
阅读全文
摘要:fshc2mcu_if中包括ahb2reg/ahb2fifo两个文件,都是协议转换文件。ahb2reg下游文件是reg files,ahb2fifo下游文件是fifo控制器。所有的配置和flag都是要保存在reg files中的。fifo的空满flag也要保存在reg 中,所以有fifo wappe...
阅读全文
摘要:NOTE: 1.如果你需要为某个函数的所有参数(包括this指针所指的那个隐喻参数)进行类型转换,那么这个函数必须是个non-member。
阅读全文
条款23:宁一 non-member no-friend 替换member函数(prefer non-member non-friend functions to members functions)
摘要:NOTE : 1.宁可拿non-member non-friend 函数替换member函数。这样做可以增加封装性/包裹单性(packaging flexibility)和机能扩展性。
阅读全文
摘要:NOTE: 1.切记将成员变量声明为private。这可赋予客户访问数据的一致性 可细微划分访问控制 允诺约束条件获得保证,并提供class作者以充分的实现弹性。 2.protected 并不比public更具有封装性。
阅读全文
摘要:NOTE: 1.绝不要返回pointer或reference 指向一个local stack 对象,或返回reference 指向一个heap-allocated对象,或返回pointer 或reference指向一个local static 对象而有可能同时需要多个这样的对象。
阅读全文
摘要:Makefile的伪目标 用法比较多,需要有机会总结一下。典型用法make cleanmake all看考: http://www.cnblogs.com/hnrainll/archive/2011/04/12/2014082.html
阅读全文
条款20:宁以pass-by-reference-to-const替换pass-by-value(Prefer pass-by-reference-to-const to pass-by-value)
摘要:NOTE: 1.尽量以pass-by-reference-to-const 替换pass-by-value。前者通常比较高效,并可避免切割问题(slicing problem)。 2.以上规则并不适用于内置类型,以及STL的迭代器和函数对象。对他们而言,pass-by-value往往比较...
阅读全文
摘要:NOTE: 1.Class 的设计就是type的设计。在定义一个新type之前,请确认自己已经考虑过本条款所有主题(具体参考effective c++)。
阅读全文
摘要:NOTE : 1.好的接口容易被正确使用,不容易被误用。应该让所有接口努力达成这些性质。 2.“促进正确使用”的办法包括接口的一致性,以及内置类型的行为兼容。 3.“阻止误用”的办法包括建立新类型/限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。 4.tr1::s...
阅读全文
摘要:1.熟练的画时序图 达到一旦有想法可以立即通过时序图表达出来。2.下面是项目中经常用到的典型设计 2.1串并互相转换 2.2cdc 2.3握手协议 2.4cgc(门控时钟) 2.5AHB2reg文件(协议转换) 2.6FSM编码3.觉得设计一般要做到如下步骤 3.1模块接口框架图 3.2时序图 3....
阅读全文
摘要:NOTE: 1.以独立语句将newed对象存储于智能指针内。如果不这样做,一旦异常被抛出,有可能导致难以察觉的资源泄漏。
阅读全文
摘要:interface 相关知识点还是一个IEEE官方标准为指导,发现网上好多说的要么不具体要么就是错的。记录于此,有机会自己整理一下具体用法。15:11:22
阅读全文
摘要:NOTE: 1.如果你在new表达式中使用[],必须在相应的delete表达式中也使用[]。如果你在new表达式中不使用[],一定不要在相应的delete表达式中使用[]。
阅读全文
摘要:NOTE: 1.APIs往往要求访问原始资源(raw resources),所以每一个RAII class应该提供一个“取得其所管理之资源”的办法。 2.对原始资源的访问可能经由显示转换或隐式转换。一般而言显示转换比较安全,但隐式转换对客户比较方便。
阅读全文
摘要:NOTE: 1.复制RAII 对象必须一并赋值它所管理的资源,所以资源的copying行为决定RAII对象的copying行为。 2.普遍而常见的RAII class copying 行为是: 抑制copying 施行引用计数法(reference counting)。 不过其他行为...
阅读全文
摘要:经常见到标识符+(),用法比如阵列Y()、函数f().....时机到了,会总结一下。
阅读全文
摘要:NOTE: 1.为防止资源泄漏,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源。 2.两个常被使用的RAII classes 分别是 trl::shared_ptr 和 auto_ptr。前者通常是较佳选择,因为其copy行为比较直观。若选择auto_ptr, 复制动作会使它...
阅读全文
摘要:1.命令文件/函数文件+函数文件:多个M文件2.函数文件+子函数:一个M文件3. inline:无需M文件4.符号表达式+subs方式:无需M文件5.字符串+subs方式:无需M文件第一种:命令文件/函数文件+函数文件%命令/函数文件:myfile1.mclearfor t=1:10 y=mylf...
阅读全文
摘要:NOTE:1.Copying 函数应该确保复制“对象内的所有成员变量”及“所有base class成分”。2.不要尝试以某个copying函数实现另一个copying函数。应该将共同机能放进第三个函数中,并由两个copying函数共同调用。
阅读全文
摘要:1.自我赋值好多是"别名"(aliasing)带来的结果NOTE: 1.确保对象自我赋值时 operator= 有良好行为。其中技术包括比较“来源对象”和“目的对象”的地址/精心周到的语句顺序以及copy-and-swap。 2.确定任何函数如果操作一个以上的对象,而其中多个对象是同一个对象时,...
阅读全文
摘要:NOTE: 1.令赋值(assignment)操作符返回一个reference to *this. 2.此协议适用于所有赋值相关的运算比如:+= -= *=....
阅读全文
摘要:NOTE:在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class(比起当前执行构造函数和析构函数的那层)
阅读全文
摘要:1.good code styles2.+rad compile time switch for compile1.了解VCS 的架构 <===这方便了解不多 parser / event code generator / cycle code generator2.+prof 性能分析 占用CPU...
阅读全文
摘要:关于竞争冒险:1.use +race utility to locate race condition code ****2.use $vcdplusdeltacycleon to locate race condition code(不常用)3.use vcddiff & vcat t locat...
阅读全文
摘要:NOTE: 1.析构函数绝对不要吐出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该扑捉任何异常,然后吞下他们(不传播)或结束程序。 2.如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么class应该提供一个普通函数(而非析构函数中)执行该操作。
阅读全文
摘要:NOTE: 1.polymorphic(多态性质的)base classes 应该声明一个virtual 析构函数。如果class带有任何virtual函数,它就应该拥有一个virtual析构函数。 2.Classes 的设计目的如何不是作为bases classes 使用,或不是为了具备多态性...
阅读全文
摘要:1,dump wave by system function vcdplusoff(module_instance,...|net_or_reg)2.debug仿真时下面要考虑:1...
阅读全文
摘要:要求: 1.describe three methods of debugging verilog code using vcs 2.invoke ucli debugger(不重要) 3.debug verilog design using ucli(不重要)debugging方式: 1....
阅读全文
摘要:要求: 1.complie a verilog/systemverilog design using vcs 2.simulate a verilog/systemverilog designvcs ===> c===>binary(编译之后有一个目录csrc生成)step1 : compile...
阅读全文
摘要:1.分层的事件队列2.执行事件的队列3.仿真时间的计算4.同一层事件,无先后顺序这个点:觉得Verilog与systemVerilog比较,Verilog比较笼统,systemVerilog则比较细分。在Verilog眼中无论testbench、dut还是assertion都是code。所以先把co...
阅读全文