1/1/ / faculty of Electrical Engineering eindhoven university of technology Algorithmic Level design in IDaSS dr.ir. Ad C. Verschueren Eindhoven University.

Slides:



Advertisements
Similar presentations
1/1/ / faculty of Electrical Engineering eindhoven university of technology Memory Management and Protection Part 3:Virtual memory, mode switching,
Advertisements

1/1/ / faculty of Electrical Engineering eindhoven university of technology Managing complex designs Workshop on VLSI Design Using the Interactive Design.
Programmable FIR Filter Design
1/1/ / faculty of Electrical Engineering eindhoven university of technology Speeding it up Part 3: Out-Of-Order and SuperScalar execution dr.ir. A.C. Verschueren.
Simulation executable (simv)
Verilog Intro: Part 1.
1/1/ / faculty of Electrical Engineering eindhoven university of technology Introduction Part 2: Data types and addressing modes dr.ir. A.C. Verschueren.
Chapter 10- Instruction set architectures
1/1/ / faculty of Electrical Engineering eindhoven university of technology Architectures of Digital Information Systems Part 1: Interrupts and DMA dr.ir.
1/1/ / faculty of Electrical Engineering eindhoven university of technology Processor support devices Part 1:Interrupts and shared memory dr.ir. A.C. Verschueren.
1/1/ /e/e eindhoven university of technology Microprocessor Design Course 5Z008 Dr.ir. A.C. (Ad) Verschueren Eindhoven University of Technology Section.
Processor System Architecture
The Web Warrior Guide to Web Design Technologies
1/1/ / faculty of Electrical Engineering eindhoven university of technology Introduction Part 3: Input/output and co-processors dr.ir. A.C. Verschueren.
Verilog - 1 Writing Hardware Programs in Abstract Verilog  Abstract Verilog is a language with special semantics  Allows fine-grained parallelism to.
1/1/ / faculty of Electrical Engineering eindhoven university of technology Introduction Part 1: Bits, bytes and a simple processor dr.ir. A.C. Verschueren.
Operand And Instructions Representation By Dave Maung.
C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to.
1 COMP541 Sequencing and Control Montek Singh Mar 29, 2007.
Chapter 16 Control Unit Implemntation. A Basic Computer Model.
Chapter 15 IA 64 Architecture Review Predication Predication Registers Speculation Control Data Software Pipelining Prolog, Kernel, & Epilog phases Automatic.
PhD/Master course, Uppsala  Understanding the interaction between your program and computer  Structuring the code  Optimizing the code  Debugging.
Railway Foundation Electronic, Electrical and Processor Engineering.
Digital System Design EEE344 Lecture 3 Introduction to Verilog HDL Prepared by: Engr. Qazi Zia, Assistant Professor EED, COMSATS Attock1.
1/1/ / faculty of Electrical Engineering eindhoven university of technology Speeding it up Part 2: Pipeline problems & tricks dr.ir. A.C. Verschueren Eindhoven.
1/1/ / faculty of Electrical Engineering eindhoven university of technology Input/Output devices Part 3: Programmable I/O and DSP's dr.ir. A.C. Verschueren.
Cortex-M3 Debugging System
CS-334: Computer Architecture
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5Z008: Microprocessor design Introduction to the ‘Interactive Design and Simulation.
Dr. José M. Reyes Álamo 1.  The 80x86 memory addressing modes provide flexible access to memory, allowing you to easily access ◦ Variables ◦ Arrays ◦
ECE 2372 Modern Digital System Design
Machine Instruction Characteristics
MICROPROCESSOR INPUT/OUTPUT
A First Book of C++: From Here To There, Third Edition2 Objectives You should be able to describe: Function and Parameter Declarations Returning a Single.
CHAPTER 3 TOP LEVEL VIEW OF COMPUTER FUNCTION AND INTERCONNECTION
Chapter 4 - Implementing Standard Program Structures in 8086 Assembly Language from Microprocessors and Interfacing by Douglas Hall.
VHDL IE- CSE. What do you understand by VHDL??  VHDL stands for VHSIC (Very High Speed Integrated Circuits) Hardware Description Language.
1 Workshop Topics - Outline Workshop 1 - Introduction Workshop 2 - module instantiation Workshop 3 - Lexical conventions Workshop 4 - Value Logic System.
1 Workshop Topics - Outline Workshop 1 - Introduction Workshop 2 - module instantiation Workshop 3 - Lexical conventions Workshop 4 - Value Logic System.
EEE440 Computer Architecture
Module : Algorithmic state machines. Machine language Machine language is built up from discrete statements or instructions. On the processing architecture,
25 April 2000 SEESCOASEESCOA STWW - Programma Evaluation of on-chip debugging techniques Deliverable D5.1 Michiel Ronsse.
Fall 2004EE 3563 Digital Systems Design EE 3563 VHSIC Hardware Description Language  Required Reading: –These Slides –VHDL Tutorial  Very High Speed.
1 Control Unit Operation and Microprogramming Chap 16 & 17 of CO&A Dr. Farag.
ECEG-3202 Computer Architecture and Organization Chapter 3 Top Level View of Computer Function and Interconnection.
Slide 1 2. Verilog Elements. Slide 2 Why (V)HDL? (VHDL, Verilog etc.), Karen Parnell, Nick Mehta, “Programmable Logic Design Quick Start Handbook”, Xilinx.
Operand Addressing And Instruction Representation Cs355-Chapter 6.
Processor Structure and Function Chapter8:. CPU Structure  CPU must:  Fetch instructions –Read instruction from memory  Interpret instructions –Instruction.
Introduction to ASIC flow and Verilog HDL
Digital Computer Concept and Practice Copyright ©2012 by Jaejin Lee Control Unit.
04/26/20031 ECE 551: Digital System Design & Synthesis Lecture Set : Introduction to VHDL 12.2: VHDL versus Verilog (Separate File)
VHDL Discussion Subprograms IAY 0600 Digital Systems Design Alexander Sudnitson Tallinn University of Technology 1.
Programming Fundamentals. Topics to be covered Today Recursion Inline Functions Scope and Storage Class A simple class Constructor Destructor.
55:032 - Intro. to Digital DesignPage 1 VHDL and Processes Defining Sequential Circuit Behavior.
MICROPROCESSOR DETAILS 1 Updated April 2011 ©Paul R. Godin prgodin gmail.com.
Presentation By :- Nikhil R. Anande ( ) Electronic & Communication Engineering. 3 nd Year / 5 th Semester FACULTY GUIDE : RAHIUL PATEL SIR MICROCONTROLLER.
1 Workshop Topics - Outline Workshop 1 - Introduction Workshop 2 - module instantiation Workshop 3 - Lexical conventions Workshop 4 - Value Logic System.
Architectures of Digital Information Systems Part 1: Interrupts and DMA dr.ir. A.C. Verschueren Eindhoven University of Technology Section of Digital.
Processor support devices Part 2: Caches and the MESI protocol
Control Unit Lecture 6.
Chap 7. Register Transfers and Datapaths
Microcomputer Programming
Chapter 3 Top Level View of Computer Function and Interconnection
Control Structures (Structured Programming) for controlling the procedural aspects of programming CS1110 – Kaminski.
ECE 352 Digital System Fundamentals
Control Structures (Structured Programming) for controlling the procedural aspects of programming CS1110 – Kaminski.
Working with the Compute Block
Presentation transcript:

1/1/ / faculty of Electrical Engineering eindhoven university of technology Algorithmic Level design in IDaSS dr.ir. Ad C. Verschueren Eindhoven University of Technology section of Information and Communication Systems

1/1/ / faculty of Electrical Engineering eindhoven university of technology Contents Basic idea, (dis)advantages, when to use Algorithms = variables + routines The actual Algorithmic Level language – assignments and commands – test blocks and loops – subroutine calls and returns – clock synchronisation AL block building and debugging environment AL_block

1/1/ / faculty of Electrical Engineering eindhoven university of technology The basic idea Single block describes datapath AND control – local storage with register and RAM-like variables – functionality with structured programming language ‘main’ routine starts after reset (optional) subroutines without parameters (simpler hardware!) Can be placed in RTL environment – tests, controls and writes RTL components – synchronise to clock at specific program points can wait for ‘events’ in environment at these points

1/1/ / faculty of Electrical Engineering eindhoven university of technology Advantages and disadvantages On the positive side: – one AL block can contain a lot of functionality …easy to describe and modify – an AL block simulates faster than RTL equivalent On the negative side: – automatic conversion to HDL not possible (yet) – easy to describe hard-to-synthesize functionality

1/1/ / faculty of Electrical Engineering eindhoven university of technology When to use AL blocks If you don’t want to design RTL (yet) – sub-modules to be designed later – to create dynamic test environments If the functionality is very complex – use AL to find out needed storage and algorithms – specially for control-driven designs If you want to have faster simulation – can be used to hide the actual architecture

1/1/ / faculty of Electrical Engineering eindhoven university of technology Types of routines The ‘main’ routine starts after (system) reset – this routine is optional, startup ‘idle’ if not defined ‘Global’ subroutines externally callable – uses ‘call: name’ command: ‘interrupt’ behaviour – call and return take a clock cycle (to synchronise) ‘Local’ subroutines for internal use only – call and return immediately

1/1/ / faculty of Electrical Engineering eindhoven university of technology Types of variables Local variables – registers: bits, with semaphore, local inc/dec – memories: as RAM, but no ports – assignments take place immediately – name in text starts with underscore like ‘_ACCU’ ANY value in RTL environment – same sources as state controller test expressions async. connector tests only in ‘wait expressions’ – clocked assignments to registers and RAM’s

1/1/ / faculty of Electrical Engineering eindhoven university of technology Algorithmic Level language overview Assignments and commands Conditional execution with test blocks Four types of loops – endless, while..do.., do..until.., counted Subroutine calls and returns Wait statements and wait expressions

1/1/ / faculty of Electrical Engineering eindhoven university of technology AL language: := assignments Targets local/external registers or RAM’s – writing external RAM’s will not be synthesizable – external assignments executed at next clock Wide range of sources within expressions – local registers or RAM locations – clocked values testable by state controllers – external memory locations (not synthesizable) Memory locations addressed with – address expressions in is NOT operator

1/1/ / faculty of Electrical Engineering eindhoven university of technology Assignments question What is the behaviour of the following code? EXTREG := 1; _INTREG := 1; { “wait for clock!” }; [.. “start endless loop” | EXTREG := _INTREG + EXTREG; _INTREG := EXTREG; { “wait for clock!” } ] “end of loop”

1/1/ / faculty of Electrical Engineering eindhoven university of technology AL language: commands AL block gives commands like state controllers – same syntax, including paths and signal uses – numeric value parameters can be expressions STACK push: + ACCU); Local registers can also be given commands – these know ‘reset’, ‘inc’, ‘dec’ and ‘ressem’ – setting the semaphore is done on assignment

1/1/ / faculty of Electrical Engineering eindhoven university of technology AL language: test blocks Basically, same syntax as in state controllers – only one test expression, no state transitions Assigning test result to local register possible – test value taken from register, which can change: [ _LOCALREG := EXTREG | 0 _LOCALREG inc“if this is done…” | 1 EXTREG := 4“…then this too” ]; Breaking out of test block possible with ‘ >> ’ – from nested tests with ‘ >> 2 ’, ‘ >> 3’ etc.

1/1/ / faculty of Electrical Engineering eindhoven university of technology AL language: loops (1) Syntax is simple: [ “loop spec” | “body” ]; – the loop spec uses ‘..’ as body placeholder – the body is any valid sequence of statements While..do.. and do..until.. are very similar – while..do.. tests for non-zero before executing body [ _REG > 0.. | _REG dec. ]; “. = clock” – do..until.. executes body before testing for non-zero [.. _REG = 0 | _REG dec. ]; – both may assign test result to local register

1/1/ / faculty of Electrical Engineering eindhoven university of technology AL language: loops (2) Breaking out of a loop is done with ‘>>>’ An endless loop looks like this: [.. | “body” ]; – without a loop break, only at end of main routine! Counted loop example: [ _REG := | := 0 ]; – start and target values can both be expressions – counter increments/decrements towards target value – without assignment, counter is hidden – the only loop which can run without waiting for clock

1/1/ / faculty of Electrical Engineering eindhoven university of technology AL language: calls and returns local subroutine call: => _ReadParam; – does not take any simulation time global subroutine call: => ExecInterrupt; – waits for clock before executing actual call return from subroutine: <= – wait for clock in global subroutine and main routine – implicit return placed at end of each routine – may be nested in test blocks and/or loops – at end of main routine, AL block becomes ‘idle’

1/1/ / faculty of Electrical Engineering eindhoven university of technology AL language: wait statements (1) The simplest one: ‘wait here for the clock’ – replace ‘;’ separator by a period (easy to miss!) – use ‘empty wait statement’: ‘ {}; ’ Wait for more than one clock: ‘ { 2 | } ’ – value or expression specify additional clocks to wait The ‘wait expression’: wait and test – can be used instead of normal expression – can test asynchronous values (f.i. connectors) _ALURESULT := { ALU\\output }; – returns value as it was just before the clock

1/1/ / faculty of Electrical Engineering eindhoven university of technology AL language: wait statements (2) Wait for clock until value non-zero possible – basic form: { | STARTREG }; – ‘startup delay’, holds off testing a number of clocks: { _MINWAIT | NOTBUSYBIT }; – with ‘timeout’, returns after max. number of clocks: { | DATAVALID | _TOCLOCKS }; – combined: { 2 | TST | 2 }; “value at 3rd clk” – can be used in assignment, timeout returns zero value returned is value from just before the clock

1/1/ / faculty of Electrical Engineering eindhoven university of technology AL language: wait statements (3) Looks difficult, but is easy to remember... – value or expression before first ‘ | ’: number of clocks to wait before testing starts – expression after first ‘ | ’: the test expression which should return non-zero – value or expression after second ‘ | ’: number of clocks until timeout – if there are no vertical bars at all: just test the expression, no startup, no timeout – the test itself adds one clock to return the result

1/1/ / faculty of Electrical Engineering eindhoven university of technology AL blocks debugging environment One window does it all with four modes: – local variable definition, monitoring and editing – main, local and global (sub)routine editing/compiling – program execution tracing down to statement level – execution stack monitoring and editing More of these can be attached to one AL block – allows multiple aspects monitoring at the same time

1/1/ / faculty of Electrical Engineering eindhoven university of technology AL blocks single stepping Option switchable for trace and stack modes: Execute next statement Execute until wait statement Perform next clock step

1/1/ / faculty of Electrical Engineering eindhoven university of technology Conclusion AL blocks from abstraction level above RTL Easy to specify complex behaviour –With a high level ‘program flow’ –But close to hardware in operations and data storage Integrated within RTL environment –AL blocks communicate via RTL constructs –After AL-to-RTL conversion: same communication IDaSS RTL prepared for AL-to-RTL conversion! –FSM’s know subroutines, interrupts and ‘idle’ state

1/1/ / faculty of Electrical Engineering eindhoven university of technology AL blocks workshop Example files: – ‘alexmple.des’ shows all constructs in operation open register and trace windows, single step! – ‘al8048.des’: processor core in AL block Do-it-yourself: – try out the assignment (question) example – create a digital FIR filter: data samples and constant memories (signed!) sample memory shifts new sample each cycle result is sum over data[i] +*+ constant[i]