Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
Secworks SHA256 Project
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
SoCLabs
Secworks SHA256 Project
Commits
30189bdf
Commit
30189bdf
authored
2 years ago
by
dam1n19
Browse files
Options
Downloads
Patches
Plain Diff
Added example APB regsiters into top level wrapper
parent
8f9dd46e
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
flist/apb_ip.flist
+27
-0
27 additions, 0 deletions
flist/apb_ip.flist
wrapper/src/wrapper_secworks_sha256.sv
+133
-26
133 additions, 26 deletions
wrapper/src/wrapper_secworks_sha256.sv
with
160 additions
and
26 deletions
flist/apb_ip.flist
0 → 100644
+
27
−
0
View file @
30189bdf
//-----------------------------------------------------------------------------
// Accelerator Wrapper CMSDK Filelist
// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
//
// Contributors
//
// David Mapstone (d.a.mapstone@soton.ac.uk)
//
// Copyright � 2021-3, SoC Labs (www.soclabs.org)
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Abstract : Verilog Command File for Accelerator CMSDK AHB IP
//-----------------------------------------------------------------------------
// ============= Verilog library extensions ===========
+libext+.v+.vlib
// ============= Accelerator Module search path =============
-y $(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_ahb_to_apb/verilog
-y $(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb3_eg_slave/verilog
+incdir+(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_ahb_to_apb/verilog
+incdir+(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb3_eg_slave/verilog
$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_ahb_to_apb/verilog/cmsdk_ahb_to_apb.v
$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb3_eg_slave/verilog/cmsdk_apb3_eg_slave_interface.v
$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb3_eg_slave/verilog/cmsdk_apb3_eg_slave_reg.v
$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb3_eg_slave/verilog/cmsdk_apb3_eg_slave.v
This diff is collapsed.
Click to expand it.
wrapper/src/wrapper_secworks_sha256.sv
+
133
−
26
View file @
30189bdf
...
@@ -48,14 +48,18 @@ module wrapper_secworks_sha256 #(
...
@@ -48,14 +48,18 @@ module wrapper_secworks_sha256 #(
// Input Port Parameters
// Input Port Parameters
localparam
[
AHBADDRWIDTH
-
1
:
0
]
INPORTADDR
=
'h000
;
localparam
[
AHBADDRWIDTH
-
1
:
0
]
INPORTADDR
=
'h000
;
localparam
INPORTAHBADDRWIDTH
=
AHBADDRWIDTH
-
1
;
localparam
INPORTAHBADDRWIDTH
=
AHBADDRWIDTH
-
2
;
// Output Port Parameters
// Output Port Parameters
localparam
[
AHBADDRWIDTH
-
1
:
0
]
OUTPORTADDR
=
'h
8
00
;
localparam
[
AHBADDRWIDTH
-
1
:
0
]
OUTPORTADDR
=
'h
4
00
;
localparam
OUTPORTAHBADDRWIDTH
=
AHBADDRWIDTH
-
1
;
localparam
OUTPORTAHBADDRWIDTH
=
AHBADDRWIDTH
-
2
;
localparam
OUTPACKETBYTEWIDTH
=
$
clog2
(
OUTPACKETWIDTH
/
8
);
// Number of Bytes in Packet
localparam
OUTPACKETBYTEWIDTH
=
$
clog2
(
OUTPACKETWIDTH
/
8
);
// Number of Bytes in Packet
localparam
OUTPACKETSPACEWIDTH
=
OUTPORTAHBADDRWIDTH
-
OUTPACKETBYTEWIDTH
;
// Number of Bits to represent all Packets in Address Space
localparam
OUTPACKETSPACEWIDTH
=
OUTPORTAHBADDRWIDTH
-
OUTPACKETBYTEWIDTH
;
// Number of Bits to represent all Packets in Address Space
// Control and Status Register Parameters
localparam
[
AHBADDRWIDTH
-
1
:
0
]
CSRADDR
=
'h800
;
localparam
CSRADDRWIDTH
=
AHBADDRWIDTH
-
2
;
//**********************************************************
//**********************************************************
// Wrapper AHB Components
// Wrapper AHB Components
...
@@ -77,16 +81,23 @@ module wrapper_secworks_sha256 #(
...
@@ -77,16 +81,23 @@ module wrapper_secworks_sha256 #(
logic
hresp1
;
logic
hresp1
;
logic
[
31
:
0
]
hrdata1
;
logic
[
31
:
0
]
hrdata1
;
// AHB Target 2 -
Default Target
// AHB Target 2 -
CSRs
logic
hsel2
;
logic
hsel2
;
logic
hreadyout2
;
logic
hreadyout2
;
logic
hresp2
;
logic
hresp2
;
logic
[
31
:
0
]
hrdata2
;
logic
[
31
:
0
]
hrdata2
;
// AHB Target 3 - Default Target
logic
hsel3
;
logic
hreadyout3
;
logic
hresp3
;
logic
[
31
:
0
]
hrdata3
;
// Internal AHB Address Assignment
// Internal AHB Address Assignment
assign
hsel0
=
((
HADDRS
<
OUTPORTADDR
)
&&
(
HADDRS
>=
INPORTADDR
))
?
1'b1
:
1'b0
;
// Input Port Select
assign
hsel0
=
((
HADDRS
<
OUTPORTADDR
)
&&
(
HADDRS
>=
INPORTADDR
))
?
1'b1
:
1'b0
;
// Input Port Select
assign
hsel1
=
(
HADDRS
>=
OUTPORTADDR
)
?
1'b1
:
1'b0
;
// Output Port Select
assign
hsel1
=
((
HADDRS
<
CSRADDR
)
&&
(
HADDRS
>=
OUTPORTADDR
))
?
1'b1
:
1'b0
;
// Output Port Select
assign
hsel2
=
(
hsel0
|
hsel1
)
?
1'b0
:
1'b1
;
// Default Target Select
assign
hsel2
=
(
HADDRS
>=
CSRADDR
)
?
1'b1
:
1'b0
;
// CSR Select
assign
hsel3
=
(
hsel0
|
hsel1
|
hsel2
)
?
1'b0
:
1'b1
;
// Default Target Select
// AHB Target Multiplexer
// AHB Target Multiplexer
cmsdk_ahb_slave_mux
#(
cmsdk_ahb_slave_mux
#(
...
@@ -116,10 +127,10 @@ module wrapper_secworks_sha256 #(
...
@@ -116,10 +127,10 @@ module wrapper_secworks_sha256 #(
.
HREADYOUT2
(
hreadyout2
),
.
HREADYOUT2
(
hreadyout2
),
.
HRESP2
(
hresp2
),
.
HRESP2
(
hresp2
),
.
HRDATA2
(
hrdata2
),
.
HRDATA2
(
hrdata2
),
.
HSEL3
(
1'b0
),
// Input Port 3
.
HSEL3
(
hsel3
),
// Input Port 3
.
HREADYOUT3
(),
.
HREADYOUT3
(
hreadyout3
),
.
HRESP3
(),
.
HRESP3
(
hresp3
),
.
HRDATA3
(),
.
HRDATA3
(
hrdata3
),
.
HSEL4
(
1'b0
),
// Input Port 4
.
HSEL4
(
1'b0
),
// Input Port 4
.
HREADYOUT4
(),
.
HREADYOUT4
(),
.
HRESP4
(),
.
HRESP4
(),
...
@@ -170,7 +181,7 @@ module wrapper_secworks_sha256 #(
...
@@ -170,7 +181,7 @@ module wrapper_secworks_sha256 #(
// Input slave port: 32 bit data bus interface
// Input slave port: 32 bit data bus interface
.
hsels
(
hsel0
),
.
hsels
(
hsel0
),
.
haddrs
(
HADDRS
[
AHBADDRWIDTH
-
2
:
0
]),
.
haddrs
(
HADDRS
[
INPORT
AHBADDRWIDTH
-
1
:
0
]),
.
htranss
(
HTRANSS
),
.
htranss
(
HTRANSS
),
.
hsizes
(
HSIZES
),
.
hsizes
(
HSIZES
),
.
hwrites
(
HWRITES
),
.
hwrites
(
HWRITES
),
...
@@ -235,7 +246,7 @@ module wrapper_secworks_sha256 #(
...
@@ -235,7 +246,7 @@ module wrapper_secworks_sha256 #(
// Input slave port: 32 bit data bus interface
// Input slave port: 32 bit data bus interface
.
hsels
(
hsel1
),
.
hsels
(
hsel1
),
.
haddrs
(
HADDRS
[
AHBADDRWIDTH
-
2
:
0
]),
.
haddrs
(
HADDRS
[
OUTPORT
AHBADDRWIDTH
-
1
:
0
]),
.
htranss
(
HTRANSS
),
.
htranss
(
HTRANSS
),
.
hsizes
(
HSIZES
),
.
hsizes
(
HSIZES
),
.
hwrites
(
HWRITES
),
.
hwrites
(
HWRITES
),
...
@@ -260,6 +271,112 @@ module wrapper_secworks_sha256 #(
...
@@ -260,6 +271,112 @@ module wrapper_secworks_sha256 #(
.
block_read_addr
(
block_read_addr
)
.
block_read_addr
(
block_read_addr
)
);
);
//----------------------------------------------------------
// Wrapper Control and Staus Registers
//----------------------------------------------------------
// CSR APB wiring logic
logic
[
CSRADDRWIDTH
-
1
:
0
]
CSRPADDR
;
logic
CSRPENABLE
;
logic
CSRPWRITE
;
logic
[
3
:
0
]
CSRPSTRB
;
logic
[
2
:
0
]
CSRPPROT
;
logic
[
31
:
0
]
CSRPWDATA
;
logic
CSRPSEL
;
logic
CSRAPBACTIVE
;
logic
[
31
:
0
]
CSRPRDATA
;
logic
CSRPREADY
;
logic
CSRPSLVERR
;
// CSR register wiring logic
logic
[
CSRADDRWIDTH
-
1
:
0
]
csr_reg_addr
;
logic
csr_reg_read_en
;
logic
csr_reg_write_en
;
logic
[
31
:
0
]
csr_reg_wdata
;
logic
[
31
:
0
]
csr_reg_rdata
;
// AHB to APB Bridge
cmsdk_ahb_to_apb
#(
CSRADDRWIDTH
)
u_csr_ahb_apb_bridge
(
.
HCLK
(
HCLK
),
// Clock
.
HRESETn
(
HRESETn
),
// Reset
.
PCLKEN
(
1'b1
),
// APB clock enable signal
.
HSEL
(
hsel2
),
// Device select
.
HADDR
,
(
HADDRS
[
CSRADDRWIDTH
-
1
:
0
])
// Address
.
HTRANS
(
HTRANSS
),
// Transfer control
.
HSIZE
(
HSIZES
),
// Transfer size
.
HPROT
(
4'b1111
),
// Protection control
.
HWRITE
(
HWRITES
),
// Write control
.
HREADY
,
(
HREADYS
)
// Transfer phase done
.
HWDATA
(
HWDATAS
),
// Write data
.
HREADYOUT
(
hreadyout2
),
// Device ready
.
HRDATA
(
hrdata2
),
// Read data output
.
HRESP
(
hresp2
),
// Device response
// APB Output
.
PADDR
(
CSRPADDR
),
// APB Address
.
PENABLE
(
CSRPENABLE
),
// APB Enable
.
PWRITE
(
CSRPWRITE
),
// APB Write
.
PSTRB
(
CSRPSTRB
),
// APB Byte Strobe
.
PPROT
(
CSRPPROT
),
// APB Prot
.
PWDATA
(
CSRPWDATA
),
// APB write data
.
PSEL
(
CSRPSEL
),
// APB Select
.
APBACTIVE
(
CSRAPBACTIVE
),
// APB bus is active, for clock gating
// of APB bus
// APB Input
.
PRDATA
(
CSRPRDATA
),
// Read data for each APB slave
.
PREADY
(
CSRPREADY
),
// Ready for each APB slave
.
PSLVERR
(
CSRPSLVERR
)
// Error state for each APB slave
);
// APB to Register Interface
cmsdk_apb3_eg_slave_interface
#(
CSRADDRWIDTH
)
u_csr_reg_inf
(
.
pclk
(
HCLK
),
// pclk
.
presetn
(
HRESETn
),
// reset
.
psel
(
CSRPSEL
),
// apb interface inputs
.
paddr
(
CSRPADDR
),
.
penable
(
CSRPENABLE
),
.
pwrite
(
CSRPWRITE
),
.
pwdata
(
CSRPWDATA
),
.
prdata
(
CSRPRDATA
),
// apb interface outputs
.
pready
(
CSRPREADY
),
.
pslverr
(
CSRPSLVERR
),
// Register interface
.
addr
(
csr_reg_addr
),
.
read_en
(
csr_reg_read_en
),
.
write_en
(
csr_reg_write_en
),
.
wdata
(
csr_reg_wdata
),
.
rdata
(
csr_reg_rdata
)
);
// Example Register Block
cmsdk_apb3_eg_slave_reg
#(
CSRADDRWIDTH
)
u_csr_block
(
.
pclk
(
HCLK
),
.
presetn
(
HRESETn
),
// Register interface
.
addr
(
csr_reg_addr
),
.
read_en
(
csr_reg_read_en
),
.
write_en
(
csr_reg_write_en
),
.
wdata
(
csr_reg_wdata
),
.
ecorevnum
(
4'd0
),
.
rdata
(
csr_reg_rdata
)
);
//----------------------------------------------------------
//----------------------------------------------------------
// Default AHB Target Logic
// Default AHB Target Logic
//----------------------------------------------------------
//----------------------------------------------------------
...
@@ -268,25 +385,15 @@ module wrapper_secworks_sha256 #(
...
@@ -268,25 +385,15 @@ module wrapper_secworks_sha256 #(
cmsdk_ahb_default_slave
u_ahb_default_slave
(
cmsdk_ahb_default_slave
u_ahb_default_slave
(
.
HCLK
(
HCLK
),
.
HCLK
(
HCLK
),
.
HRESETn
(
HRESETn
),
.
HRESETn
(
HRESETn
),
.
HSEL
(
hsel
2
),
.
HSEL
(
hsel
3
),
.
HTRANS
(
HTRANSS
),
.
HTRANS
(
HTRANSS
),
.
HREADY
(
HREADYS
),
.
HREADY
(
HREADYS
),
.
HREADYOUT
(
hreadyout
2
),
.
HREADYOUT
(
hreadyout
3
),
.
HRESP
(
hresp
2
)
.
HRESP
(
hresp
3
)
);
);
// Default Targets Data is tied off
// Default Targets Data is tied off
assign
hrdata2
=
{
32
{
1'b0
}}
;
assign
hrdata3
=
{
32
{
1'b0
}}
;
//**********************************************************
// Wrapper APB Components
//**********************************************************
// TODO: Instantiate APB Mux
// TODO: Instantiate APB Default Target
// TODO: Wrapper Register Blocks
//**********************************************************
//**********************************************************
// Wrapper Interrupt Generation
// Wrapper Interrupt Generation
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment