From 179e6f958709a56eb8eaec210bf6c108017342dd Mon Sep 17 00:00:00 2001 From: sarmadsalman-RS Date: Tue, 3 Oct 2023 17:49:19 +0500 Subject: [PATCH] added block diagram, details and summary for UI backend implementation --- .../v1_0/axi2axilite_bridge_gen.py | 19 +++++++++++++++++- .../v1_0/docs/axi2axilite_bridge_blackbox.png | Bin 0 -> 33032 bytes 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 rapidsilicon/ip/axi2axilite_bridge/v1_0/docs/axi2axilite_bridge_blackbox.png diff --git a/rapidsilicon/ip/axi2axilite_bridge/v1_0/axi2axilite_bridge_gen.py b/rapidsilicon/ip/axi2axilite_bridge/v1_0/axi2axilite_bridge_gen.py index ed4cb68e..644e6dc5 100755 --- a/rapidsilicon/ip/axi2axilite_bridge/v1_0/axi2axilite_bridge_gen.py +++ b/rapidsilicon/ip/axi2axilite_bridge/v1_0/axi2axilite_bridge_gen.py @@ -102,13 +102,30 @@ def main(): args = parser.parse_args() + details = { "IP details": { + 'Name' : 'AXI-to-AXILite Bridge', + 'Version' : 'V1_0', + 'Interface' : 'AXI4, AXI-Lite', + 'Description' : 'The AXI to AXI-Lite bridge is a hardware component that facilitates communication between devices operating with the AXI protocol and those operating with the AXI-Lite protocol in a system-on-chip (SoC) design. The bridge acts as a mediator between high speed and low speed peripherals.'} + } + # Import JSON (Optional) ----------------------------------------------------------------------- if args.json: args = rs_builder.import_args_from_json(parser=parser, json_filename=args.json) + rs_builder.import_ip_details_json(build_dir=args.build_dir ,details=details , build_name = args.build_name, version = "v1_0") + + summary = { + "Data Width": args.data_width, + "Address Width": args.addr_width, + "ID Width" : args.id_width, + "Maximum outstanding AXI-Lite Transactions" : "4096", + "Performance" : "One clock per transaction is maintained in most cases. Latency may increase depending on the slave's data path." + + } # Export JSON Template (Optional) -------------------------------------------------------------- if args.json_template: - rs_builder.export_json_template(parser=parser, dep_dict=dep_dict) + rs_builder.export_json_template(parser=parser, dep_dict=dep_dict, summary=summary) # Create Wrapper ------------------------------------------------------------------------------- platform = OSFPGAPlatform(io=[], toolchain="raptor", device="gemini") diff --git a/rapidsilicon/ip/axi2axilite_bridge/v1_0/docs/axi2axilite_bridge_blackbox.png b/rapidsilicon/ip/axi2axilite_bridge/v1_0/docs/axi2axilite_bridge_blackbox.png new file mode 100644 index 0000000000000000000000000000000000000000..562cc706a1be7d39839e9ef55387ee6fb6c6e4db GIT binary patch literal 33032 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 literal 0 HcmV?d00001