Instruction Set Architecture layer and Register Transfer Level

 

Component: At ISA or RTL structural level, components are like: MUX((Multiplexes), ALU (Arithmetic Logic Unit), F.F. (Flip Flop), Register File and Memory.

Connector:  Wire function as connector.

Interface: input/output ports

Link:

Example: Take a simplified datapath for ALU instruction:

 

 

 

And from xADL2.0 point of view, the above structure may look like:

 

 

 

 

 

 

 

<! - - Namespace Declaration - - >

<?xml version = “1.0”  encoding = “UTF-8” ?>

<xArch  xmlns = “http://www.ics.uci.edu/pub/arch/xArch/instance.xsd”

xmlns:instance = “http://www.ics.uci.edu/pub/arch/xArch/instance.xsd”

xmlns:types = “http://www.ics.uci.edu/pub/arch/xArch/types.xsd”

xmlns:xlink = “http://www.w3.org/1999/xlink”

xmlns:xsi = “http://www.w3.org/2000/10/XMLSchema-instance”>

 

<types:archStructure xsi:type = “types:ArchStructure”>

 

<! - - Component: Instruction memory Description - ->

      <types:component instance:id = “InstructionMemoryComp” xsi:type = “types:Component”>

      <types:description xsi:type = “instance:Description”>InstructionMemory</types:description>

      <types:interface instance:id = “InstructionMemoryCompRight” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”> InstructionMemory.Right </types:description>

      <types:direction xsi:type = “instance:Direction” >out</types:direction>

      <types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

      </types:interface>

      <types:type xlink:type = “simple” xlink:href = “#tInstructionMemory” />

      </types:component>

 

<! - - Component: GPR Description - ->

      <types:component instance:id = “GPRComp” xsi:type = “types:Component”>

      <types:description xsi:type = “instance:Description”>GPR</types:description>

      <types:interface instance:id = “GPRCompRight1” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”> GPR.Right1 </types:description>

      <types:direction xsi:type = “instance:Direction” >out</types:direction>

      <types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

      </types:interface>

      <types:interface instance:id = “GPRCompRight2” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”> GPR.Right2 </types:description>

      <types:direction xsi:type = “instance:Direction” >out</types:direction>

      <types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

      </types:interface>

      <types:interface instance:id = “GPRCompLeft1” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”> GPR.Left1 </types:description>

      <types:direction xsi:type = “instance:Direction” >in</types:direction>

      <types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

      </types:interface>

      <types:interface instance:id = “GPRCompLeft2” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”> GPR.Left2 </types:description>

      <types:direction xsi:type = “instance:Direction” >in</types:direction>

      <types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

      </types:interface>

      <types:type xlink:type = “simple” xlink:href = “#tGPR” />

      </types:component>

 

<! - - Component: ALU Description - ->

<types:component instance:id = “ALUComp” xsi:type = “types:Component”>

<types:description xsi:type = “instance:Description”>ALU</types:description>

<types:interface instance:id = “ALUCompRight” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> ALU.Right </types:description>

<types:direction xsi:type = “instance:Direction” >out</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tRightType”/>

</types:interface>

<types:interface instance:id = “ALUCompLeft1” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> ALU.Left1</types:description>

<types:direction xsi:type = “instance:Direction” >in</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

</types:interface>

<types:interface instance:id = “ALUCompLeft” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> ALU.Left2 </types:description>

<types:direction xsi:type = “instance:Direction” >in</types:direction>

<types:type xlink:type = “simple” xlink:href = “ #tLeftType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href = “#tMemory” />

</types:component>

 

<! - - Connector: Wire1 Description - ->

<types:connector instance:id = “wire1” xsi:type = “types:Connector”>

<types:description xsi:type = “instance:Description” > wire on board</types:description>

<types:interface instance:id = “wire1Left” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> wire.Left</types:description>

<types:direction xsi:type = “instance:Direction:>in</types:direction>

<types:type xlink:type = “simple” xlink:href = “#tLeftType”/>

</types:interface>

<types:interface instance:id = “wire1Right” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> wire.Right</types:description>

<types:direction xsi:type = “instance:Direction:>out</types:direction>

<types:type xlink:type = “simple” xlink:href = “#tRightType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href= “#twire” />

</types:connector>

 

<! - - Connector: Wire2 Description - ->

<types:connector instance:id = “wire2” xsi:type = “types:Connector”>

<types:description xsi:type = “instance:Description” > wire on board</types:description>

<types:interface instance:id = “wire2Left” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> wire.Left</types:description>

<types:direction xsi:type = “instance:Direction:>in</types:direction>

<types:type xlink:type = “simple” xlink:href = “#tLeftType”/>

</types:interface>

<types:interface instance:id = “wire2Right” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> wire.Right</types:description>

<types:direction xsi:type = “instance:Direction:>out</types:direction>

<types:type xlink:type = “simple” xlink:href = “#tRightType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href= “#twire” />

</types:connector>

 

<! - - Connector: Wire3 Description - ->

<types:connector instance:id = “wire3” xsi:type = “types:Connector”>

<types:description xsi:type = “instance:Description” > wire on board</types:description>

<types:interface instance:id = “wire3Left” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> wire.Left</types:description>

<types:direction xsi:type = “instance:Direction:>in</types:direction>

<types:type xlink:type = “simple” xlink:href = “#tLeftType”/>

</types:interface>

<types:interface instance:id = “wire3Right” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> wire.Right</types:description>

<types:direction xsi:type = “instance:Direction:>out</types:direction>

<types:type xlink:type = “simple” xlink:href = “#tRightType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href= “#twire” />

</types:connector>

 

<! - - Connector: Wire4 Description - ->

<types:connector instance:id = “wire4” xsi:type = “types:Connector”>

<types:description xsi:type = “instance:Description” > wire on board</types:description>

<types:interface instance:id = “wire4Left” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> wire.Left</types:description>

<types:direction xsi:type = “instance:Direction:>in</types:direction>

<types:type xlink:type = “simple” xlink:href = “#tLeftType”/>

</types:interface>

<types:interface instance:id = “wire4Right” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> wire.Right</types:description>

<types:direction xsi:type = “instance:Direction:>out</types:direction>

<types:type xlink:type = “simple” xlink:href = “#tRightType”/>

</types:interface>

<types:type xlink:type = “simple” xlink:href= “#twire” />

</types:connector>

 

<! - - Link: InstructionMemory-GPR Description - ->

<types:link instance:id = “link1” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”>InstructionMemory-GPR</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#InstructionMemoryLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#wire1left” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<! - - Link: InstructionMemory-GPR Description - ->

<types:link instance:id = “link2” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”>InstructionMemory-GPR</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#GPRLeft” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#wire1Right” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<! - - Link: GPR-ALU Description -- >

<types:link instance:id = “link3” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”> GPR-ALU</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#GPRRight1” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#Wire2Left” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<! - - Link: GPR-ALU Description - - >

<types:link instance:id = “link4” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”> GPR-ALU</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#ALULeft1” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#Wire2Right” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<! - - Link: GPR-ALU Description - ->

<types:link instance:id = “link5” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”> GPR-ALU</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#GPRRight2” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#Wire3Left” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<! - - Link: GPR-ALU Description - ->

<types:link instance:id = “link6” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”> GPR-ALU</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#Wire3Right” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#ALULeft2” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<! - - Link: GPR-ALU Description- ->

<types:link instance:id = “link7” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”> GPR-ALU</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#Wire4Left” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#ALURight” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

<! - - Link:GPR-ALU Description - ->

<types:link instance:id = “link8” xsi:type = “types:Link”>

<types:description xsi:type = “instance:Description”> GPR-ALU</types:description>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#Wire4Right” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

<types:point xsi:type = “types:Point”>

<instance:anchorOnInterface xlink:href = “#GPRLeft2” xsi:type = “instance:XMLLink” xlink:type = “simple”/>

</types:point>

</types:link>

 

</types:archStructure>