Logic-level

 

 Component:  At logic structural level, logic gates are components

 Connector: wires are connectors.

 Interface:

 Link:

 Example:  The following is our earlier example:

 

 

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: Inverter Description - ->

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

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

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

      <types:description xsi:type = “instance:Description”> Inverter.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 = “InverterCompLeft” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”> Inverter.Left </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 = “#tInverter” />

</types:component>

 

<! - - Component: NAND1 Description - ->

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

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

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

      <types:description xsi:type = “instance:Description”> NAND1.Right1 </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 = “NAND1CompLeft2” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”> NAND1.Left2 </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 = “NAND1CompRight” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”> NAND1.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 = “#tGPR” />

</types:component>

 

<! - - Component: NAND2 Description - ->

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

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

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

      <types:description xsi:type = “instance:Description”> NAND2.Right1 </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 = “NAND2CompLeft2” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”> NAND2.Left2 </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 = “NAND2CompRight” xsi:type = “types:Interface”>

      <types:description xsi:type = “instance:Description”> NAND2.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 = “#tNAND” />

</types:component>

 

<! - -Component: NAND3 Description - ->

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

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

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

<types:description xsi:type = “instance:Description”> NAND3.Right1 </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 = “NAND3CompLeft2” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> NAND3.Left2 </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 = “NAND3CompRight” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”> NAND3.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 = “#tNAND3” />

</types:component>

 

<! - -Interface (Input Port): In0 Description - ->

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

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

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

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

</types:interface>

 

<! - -Interface (Input Port): In1 Description - ->

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

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

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

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

</types:interface>

 

<! - -Interface (Input Port): Select Description - ->

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

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

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

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

</types:interface>

 

<! - -Interface (Output Port): OUT Description - ->

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

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

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

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

</types:interface>

 

<!- - Connector: Con1(select-Inverter-NAND2) Description- - >

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

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

<types:interface instance:id = “Con1Left” 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 = “Con1Right1” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”>Wire.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 = “Con1Right2” xsi:type = “types:Interface”>

<types:description xsi:type = “instance:Description”>Wire.Right2</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: Con2(Inverter-NAND1) Description- - >

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

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

<types:interface instance:id = “Con2Left” 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 = “Con2Right” 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: Con3(NAND1-NAND3) Description- - >

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

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

<types:interface instance:id = “Con3Left” 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 = “Con3Right” 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: Con4(NAND2-NAND3) Description- - >

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

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

<types:interface instance:id = “Con4Left” 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 = “Con4Right” 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: Con5(In0-NAND1) Description- - >

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

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

<types:interface instance:id = “Con5Left” 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 = “Con5Right” 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: Con6(In1-NAND2) Description- - >

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

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

<types:interface instance:id = “Con6Left” 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 = “Con6Right” 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: Con7(OUT-NAND3) Description- - >

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

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

<types:interface instance:id = “Con7Left” 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 = “Con7Right” 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: Inverter-Con2-NAND1 Description - ->

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

<types:description xsi:type = “instance:Description”>Inverter-Con2</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

 

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

<types:description xsi:type = “instance:Description”>Con2-NAND1</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

 

<! - - Link: Inverter-Con1-NAND2 Description - ->

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

<types:description xsi:type = “instance:Description”> Inverter-Con1</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

 

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

<types:description xsi:type = “instance:Description”>NAND2-Con1</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

 

<! - - Link: NAND1-Con3-NAND3 Description - ->

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

<types:description xsi:type = “instance:Description”> NAND1-Con3</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

 

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

<types:description xsi:type = “instance:Description”>Con3-NAND3</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

 

<! - - Link: NAND2-Con4-NAND3 Description - ->

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

<types:description xsi:type = “instance:Description”> NAND2-Con4</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

 

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

<types:description xsi:type = “instance:Description”>Con4-NAND3</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

 

<! - - Link: In0-Con5-NAND1 Description - ->

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

<types:description xsi:type = “instance:Description”> In0-Con5</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

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

<types:description xsi:type = “instance:Description”>Con5-NAND1</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

 

<! - - Link: In1-Con6-NAND2 Description - ->

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

<types:description xsi:type = “instance:Description”> In1-Con6</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

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

<types:description xsi:type = “instance:Description”> In1-Con6</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

 

<! - - Link: Select-Con1 Description - ->

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

<types:description xsi:type = “instance:Description”> Select-Con1</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

 

<! - - Link: OUT-Con7-NAND3 Description - ->

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

<types:description xsi:type = “instance:Description”>OUT-Con7</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

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

<types:description xsi:type = “instance:Description”>OUT-Con7</types:description>

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

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

</types:point>

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

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

</types:point>

</types:link>

</types:archStructure>

… …