Abstract: This is just a glance on verilog like what are all the concepts in veriolg .You can feel like the Blueprint of verilog index.
- Verilog history.
- Basic concepts.
- Lexical Elements
- white spaces.
- Comments.
- Operators.
- Number Specifications.
- Sized.
- Unsized.
- X and Z Values.
- Negative Numbers.
- Underscore & Question marks.
- Strings.
- Identifiers & Keywords.
- Escaped Identifiers.
- Data Types.
- Value Set{0,1,X,Z}.
- Nets.
- Registers.
- Vectors.
- Integers,Real&Time.
- Arrays.
- Memories.
- Parameters.
- Strings.
- System Task & Compiler Directives.
- System Task.
- $display.
- $monitor.
- $stop.
- $finish.
- Compiler Directives.
- `define.
- `include.
- Module and Ports.
- Port.
- Port Connection Rules.
- Port Types.
- input.
- output.
- inout.
- Connecting Ports to External Signals.
- Connecting by Order List.
- Connecting Ports by Name.
- Gate Level Modeling.
- {and,nand,or,nor,xor,xnor}.
- {buf,not}.
- {buif1,bufif0}.
- Stimulus Block.
- Data Modeling.
- Continuous Assignment{assign a=b+c;}.
- Regular Delay Assignment{#2 a=b+c;}.
- Expressions,operators & precedence
- === vs ==
- Conditional Statement{ ?:T : F ;}.
- Concatenation{ {} }.
- Behavioral Modeling.
- Structured Procedures
- Initial Statements.
- Always Statements.
- Procedural Assignments.
- Blocking.
- Non Blocking.
- Timing Controls.
- Delay Based.
- Regular/Inter/Inertial{#dealy_value a = b+c;}.
- Intra/Transport{a = #b+c;}.
- Zero Delay{#0 a=b+c;}.
- Event -Based Timing Control.
- Regular Event{posedge,negedge}.
- Named Event{User defined event:Ex:after_2_posedge..etc}.
- Event or Controll{@(a or b or c),@(a,b,c)}.
- Level Sensitive.
- wait.
- Conditional Statements
- If, If_Else,If_Else_If.
- Multi-way Branching.
- case.
- casex.
- casez.
- Loops.
- While.
- For Loop.
- Repeat{loop_terminating,loop_increment are implicitly defined }.
- Forever.
- Sequential And Parallel Blocks.
- Sequential
- begin end.
- Parallel
- fork join.
- Special Features of Blocks.
- Nested Blocks
- Naming Blocks{important feature in generate statement}.
- Disabling Blocks.
- Task and Functions.
- Task{0<= execution_time <= Non_zero}.
- Function {executes in Zero simulation time}.
- Task vs Functions.
- Try Parity Calculator{Logic:cal_par=^ address-bits}.
- Try Left/Right shift register{Logic shift=(control ==`Leftshift)?(address<<1):(address>>1)}Its like for one call of task/fun one bit shift.
- Useful Modeling Techniques.
- assign and deassign{Forces only register values}.
- force and release {Forces both register and net values}.
- Over Riding Parameters.
- defparam.
- Module instance parameter.
- Conditional Compilation & Execution.
- Compilation.
- `if def
- `else
- `endif
- Execution.
- $test$plusargs.
- Time Scales
- `timescale.{`timescale time-unit/precision }.
- Useful System Tasks.
- File Open
- Opening File{$fopen("file_name")}.
- Writing to Files.
- $fdisplay {$fdisplay(file_pointer, formatted string );}
- $monitor{$fmonitor(file_pointer, formatted string );}.
- $fdisplay vs $fmonitor vs $fstorbe.{$fdisplay &$diasplay both are same in functionality but differ in output stream former one is to file and later one is to i/o terminal similarly $monitor,$strobe}.
- Closing a file.
- $flcose{$fclose("file_pointer);}.
- Random Number Generation.
- $random.
- $random(<seed>);
- Initializing Memory file.
- $readmemory(<"file_name">,<"memory_name">).
- VCD{Value change Dump}.
- Timing Delays.
- Types of delay models.
- Distributed.
- Lumped.
- pin-to-pin delay.
- Path delay modeling.
- Specify Block
- Inside Specify Block.
- Parallel Connection.
- Full Connection.
- Specparam statement.
- Conditional Path delays.
- Rise,fall and turnoff delays.
- min,typical,max delays.
- Timing Checks.
- $setup{$steup(ref_event,data_eent,limit,notifier);}
- $hold{$hold(data_eent,ref_event,limit,notifier);}.
- $width{$width(data_event,limit);}.
- $period{$period(ref_event,period_limit);}.
- $skew{$skew(ref_event,data-_event,skew_limit,notifier);}.
- User Defined Udp's.
- Udp Basics
- Udp_name {primitive Name_of_udep}.
- Terminal Declarations{input,output,reg} .
- Initialization{initial <output_terminal>=value}.
- State_table.
- Udp Rules.
- Only scalar input terminals{1 bit}.
- Only one output terminal{1 bit}.
- Z is not handled by Udp.
- inout ports are not supported.
- Combinational Udps.
- with out initialization_bock,register_values..etc.
- Sequential Udps.
- Miscellaneous Topics.
- Verilog 95 vs Verilog2001{in terms of features provided additionally }.
- What is Latchup.
- Parameter vs Local-parameter.
- Synthesizable Code.
- Try to write code FF,MUX,SHIFT_REG, using only single assignment statement.
- Memories{synchronous and asynchronous }.
- Single port.
- Dual port.
- EeepRom.
- State Diagrams in verilog.
- Sequence recognizer.
- Full_case & Parallel_case foe case statement.
- Generate Statement
Conclusion : All the topic are listed and once again i am reminding these are only topics no explanation is provided for present . it will be included in soon Any suggestions make it as comment