add uxsdcxx
This commit is contained in:
parent
be3546f7e3
commit
1ba3298dbe
|
@ -35,10 +35,10 @@ find_program(WGET wget REQUIRED)
|
|||
find_package(ZLIB REQUIRED)
|
||||
|
||||
# Add Java schema
|
||||
set(JAVA_SCHEMA ${CMAKE_CURRENT_BINARY_DIR}/../../vtr-verilog-to-routing/libs/libvtrcapnproto/schema/capnp/java.capnp)
|
||||
set(JAVA_SCHEMA ${CMAKE_CURRENT_BINARY_DIR}/schema/capnp/java.capnp)
|
||||
add_custom_command(
|
||||
OUTPUT ${JAVA_SCHEMA}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/../../vtr-verilog-to-routing/libs/libvtrcapnproto/schema/capnp/
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/schema/capnp/
|
||||
COMMAND ${WGET}
|
||||
https://raw.githubusercontent.com/capnproto/capnproto-java/master/compiler/src/main/schema/capnp/java.capnp
|
||||
-O ${JAVA_SCHEMA}
|
||||
|
@ -46,7 +46,7 @@ add_custom_command(
|
|||
|
||||
|
||||
set(CAPNPC_IMPORT_DIRS)
|
||||
list(APPEND CAPNPC_IMPORT_DIRS ${CMAKE_CURRENT_BINARY_DIR}/../../vtr-verilog-to-routing/libs/libvtrcapnproto/schema)
|
||||
list(APPEND CAPNPC_IMPORT_DIRS ${CMAKE_CURRENT_BINARY_DIR}/schema)
|
||||
|
||||
set(IC_PROTOS)
|
||||
set(IC_SRCS)
|
||||
|
@ -88,3 +88,21 @@ target_link_libraries(libopenfpgacapnproto
|
|||
libopenfpgautil
|
||||
CapnProto::capnp
|
||||
)
|
||||
|
||||
|
||||
add_custom_target(
|
||||
generate_unique_block_capnp
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory unique_blocks_capnproto_generate
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory unique_blocks_capnproto_generate
|
||||
COMMAND ${CMAKE_COMMAND} -E chdir unique_blocks_capnproto_generate git clone https://github.com/duck2/uxsdcxx
|
||||
COMMAND python3 -mpip install --user -r unique_blocks_capnproto_generate/uxsdcxx/requirements.txt
|
||||
COMMAND ${CMAKE_COMMAND} -E chdir unique_blocks_capnproto_generate python3 uxsdcxx/uxsdcxx.py ${CMAKE_CURRENT_SOURCE_DIR}/gen/unique_blocks.xsd
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
unique_blocks_capnproto_generate/unique_blocks_uxsdcxx.h
|
||||
unique_blocks_capnproto_generate/unique_blocks_uxsdcxx_capnp.h
|
||||
unique_blocks_capnproto_generate/unique_blocks_uxsdcxx_interface.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/gen
|
||||
COMMAND ${CMAKE_COMMAND} -E copy unique_blocks_capnproto_generate/unique_blocks_uxsdcxx.capnp ${CMAKE_CURRENT_SOURCE_DIR}/gen
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gen/unique_blocks.xsd
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Copyright 2018 Jeppe Johansen
|
||||
|
||||
XML 1.0 Schema for unique blocks data structure developed based on documentation here:
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
The root of the XSD file is the xs:schema. With the xs:schema are 3 types
|
||||
relevant to the code generated:
|
||||
|
||||
- xs:complexType : This defines a child tag within the schema. Most of the
|
||||
schema is made of these.
|
||||
- xs:simpleType : These define string enumerations (e.g. the "switch" tag
|
||||
"type" enumeration).
|
||||
- xs:element : There is one xs:element that is the direct child of the root
|
||||
xs:schema, and this the definition of the root tag.
|
||||
|
||||
In addition to being used for code generation, this schema can be used to
|
||||
validate whether an unique block XML conforms to this schema.
|
||||
|
||||
Additional documentation is available at
|
||||
https://github.com/duck2/uxsdcxx/blob/master/README.md
|
||||
|
||||
-->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<!-- Enumeration for BlockType -->
|
||||
<xs:simpleType name="BlockType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="cbx"/>
|
||||
<xs:enumeration value="cby"/>
|
||||
<xs:enumeration value="sb"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- BlockInfo Structure -->
|
||||
<xs:complexType name="BlockInfo">
|
||||
<xs:sequence>
|
||||
<xs:element name="type" type="BlockType"/>
|
||||
<xs:element name="x" type="xs:unsignedInt"/>
|
||||
<xs:element name="y" type="xs:unsignedInt"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- InstanceInfo Structure -->
|
||||
<xs:complexType name="InstanceInfo">
|
||||
<xs:sequence>
|
||||
<xs:element name="x" type="xs:unsignedInt"/>
|
||||
<xs:element name="y" type="xs:unsignedInt"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- UniqueBlockPacked Structure -->
|
||||
<xs:complexType name="UniqueBlockPacked">
|
||||
<xs:sequence>
|
||||
<xs:element name="blockInfo" type="BlockInfo"/>
|
||||
<xs:element name="instanceList">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="instance" type="InstanceInfo" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType> <!-- A list of IncetanceInfo -->
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- UniqueBlockCompactInfo Structure -->
|
||||
<xs:complexType name="UniqueBlockCompactInfo">
|
||||
<xs:sequence>
|
||||
<xs:element name="atomInfo">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="uniqueBlockPacked" type="UniqueBlockPacked" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType> <!-- A list of uniqueBlockPacked -->
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
</xs:schema>
|
Loading…
Reference in New Issue